2017-01-20 8 views
0

バッチスクリプト:表示変数は、「内部または外部コマンドとして認識されていません」

、すべてこんばんはは、基本的な質問をお許しください - 私は私の職場で少し一部のジョブを作成するためのスクリプトを作成しようとしていますもっと効率的。

このスクリプトは、ネットワーク共有を開き、その中にフォルダを作成し、ユーザーからの入力を要求します(ローカルプロファイル名になります)。存在する場合は、作成したフォルダに内容をコピーしますネットワーク共有。スクリプトはネットワーク共有を削除します。

"Douglas" is not recognized as an internal or external command

を参照してください、次のように

スクリプトは、このスクリプトは、理論的にはうまく機能(乱雑を言い訳)

@echo off 

net use X: \\40aGlenwood-NAS\ROOM16-Backup 

:UserInput 
set /p "UserName=Enter the user's name: " 

IF NOT EXIST %UserName% GOTO UserInput 
IF EXIST %UserName% GOTO Proceed 

:Proceed 
xcopy "C:\Users\%UserName%\Desktop" "X:\Backup" /f /r /i 

net use X: /D /YES 

timeout /t 10 

、しかし一度実行し、コマンドボックスには次のように表示されています「ダグラス」という言葉は、私たちが宣言した変数の一部です。これはコマンドではありません。

ここにヘルプがありますか?私はそれがスクリプトに影響していないことを知っていますが、私はそのメッセージを表示したくありません。また、バッチスクリプトをコーディングしたり作成したりする経験はありません。

+0

いくつかあります。 flaes、 'UserName'はあらかじめ定義された環境変数で、現在のユーザ名で既に設定されています。現在のユーザーを参照したい場合は、質問する必要はありません。コード内にdirを作成していません。 dirの存在を確認するには、パスを含める必要があります(そして二重引用符で囲まなければなりません)。 – LotPings

+0

開いている 'cmd'ウィンドウで試してください:' IF NOT EXIST Joe Douglas echo GOTO UserInput'。二重引用符を使用してください:IF NOT EXIST Joe Douglas "echo GOTO UserInput'。 – JosefZ

+0

LotPing - xcopyコマンドでディレクトリが作成されていない場合は作成されませんか?私は変数を 'ProfileName'に変更しました。そのためにありがとうございます。特定の命名基準に従ったローカルプロファイルの名前をPCに入力し、ネットワーク共有にコピーします。コメントありがとう! – JoeDougieDouglas

答えて

1

これに旋回与える:余談として

@echo off 
setlocal  
%SystemRoot%\System32\net.exe use X: \\40aGlenwood-NAS\ROOM16-Backup 
if %ERRORLEVEL% NEQ 0 (
    echo Failed to map drive. 
    goto END 
    ) 

:UserInput 
set /p USER="Enter the user's name: " 
IF NOT EXIST "c:\users\%USER%\." GOTO UserInput 

%SystemRoot%\System32\xcopy.exe "C:\Users\%USER%\Desktop" "X:\Backup" /f /r /i 
%SystemRoot%\System32\net.exe use X: /D /YES 
%SystemRoot%\System32\timeout.exe /t 10 

endlocal  
:END 

を、明示的なパス参照はつまり、セキュリティのためにあります。誰か他の人のNET.EXEのコードの実行を防ぐために、など

関連する問題