プログラムを自動化するために、いくつかのバッチファイルを作成します。
私の質問は、バッチファイルを作成するとき、現在のディレクトリは何ですか?それはファイルが置かれているディレクトリですか、それともコマンドプロンプトに表示されるディレクトリと同じですか、それとも別のディレクトリですか?
プログラムを自動化するために、いくつかのバッチファイルを作成します。
私の質問は、バッチファイルを作成するとき、現在のディレクトリは何ですか?それはファイルが置かれているディレクトリですか、それともコマンドプロンプトに表示されるディレクトリと同じですか、それとも別のディレクトリですか?
回答:
バッチファイル内から:
%cd%
現在の作業ディレクトリを参照します(変数)%~dp0
バッチファイルのディレクトリへのフルパスを参照します(静的)%~dpnx0
そして、%~f0
の両方がバッチディレクトリとファイル名(静的)への完全なパスを参照してください。.cmd
ファイルを右クリックして管理者として実行すると、バッチファイルディレクトリに末尾のスラッシュ%cd%
が付けられC:\WINDOWS\system32
たり%~dp0
付けられたりします。
バッチファイルでは、%cd%が現在のディレクトリで最もよく使用されるコマンドですが、独自の変数を設定することもできます。
set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)
Myprog.exeを開きたいとしましょう。同じフォルダにある場合は、次のコマンドを使用します。
start %mypath%\Myprog.exe
これにより、現在のフォルダーからMyprogが開きます。
もう1つのオプションは、AutomateProgramsと呼ばれるディレクトリをC:に作成することです。次に、ファイルをそのフォルダーに転送し、次のコマンドを使用してファイルを開くことができます。
start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"
%cd%
変数は可変であるため、管理者としてWindowsエクスプローラーからバッチファイルを実行すると、C:\WINDOWS\system32
ほぼ確実に期待どおりの結果が得られません。%~dp0
より一貫しています。
これは、バッチファイルを開始するディレクトリです。例えば、あなたのバッチがである場合c:\dir1\dir2
、あなたはないcd c:\dir3
、その後、バッチを実行し、カレントディレクトリになりますc:\dir3
。
ちょうど私の2セント。次のコマンドは、pendriveに配置されたバッチファイル(Windows 7)から呼び出されると失敗します。
xcopy /s /e /i %cd%Ala C:\KS\Ala
しかし、これは仕事をします:
xcopy /s /e /i %~dp0Ala C:\KS\Ala
%~dp0
%0
現在のサブルーチンの名前を与えることができる、しかし%~dp0
ます常に実行するバッチファイルへのフルパスを与えます。