まず、私はthis topicを見ましたが、私はそれを理解できませんでした。現在のバッチファイルディレクトリを取得
質問:
次の内容のD:\path\to\file.bat
でバッチファイルがあります:
echo %cd%
pause
出力は次のとおりです。
C:\
それはD:\path\to
でなければなりません私は間違って何をしていますか?
まず、私はthis topicを見ましたが、私はそれを理解できませんでした。現在のバッチファイルディレクトリを取得
質問:
次の内容のD:\path\to\file.bat
でバッチファイルがあります:
echo %cd%
pause
出力は次のとおりです。
C:\
それはD:\path\to
でなければなりません私は間違って何をしていますか?
システム読み取り専用変数%CD%
は、バッチファイルの場所ではなく、バッチの呼び出し元のパスを保持します。
%0
(例:scripts\mybatch.bat
)と入力したバッチスクリプト自体の名前を取得できます。 Parameter extensionsをこれに適用すると、%~dp0
はバッチスクリプト(例:W:\scripts\
)にドライブとパスを返し、%~f0
はフルパス名(例:W:\scripts\mybatch.cmd
)を返します。あなたはこの構文を使用してバッチスクリプトと同じフォルダに他のファイルを参照することができ
:
CALL %0\..\SecondBatch.cmd
これもサブルーチンで使用することができ、Echo %0
は、コールラベルを与えますが、echo "%~nx0"
が得られますバッチスクリプトのファイル名を指定します。
%0
変数が展開されると、結果は引用符で囲まれます。
。
私は 'D:\ Dir1 \ Dir2 \ stm.sql'に' stm.sql'を実行する必要はありません。 stm.sqlコマンドを実行するには、mysql.exe -u root -p mysql <%cd%\ stm.sql'が必要です。 –
@HamedKamravaは私のSQLバッチ用ですか? '*のようなバッチファイルではありません。バット 'または' * .sh'? – Stoleg
@ Stoleg-実際、 'D:\ Dir1 \ Dir2 \ batchfile.bat'と' D:\ Dir1 \ Dir2 \ stm.sql'には2つのファイルがあります。 batchfile.batの内容は次のとおりです: 'mysql.exe -u root -p mysql
非常にシンプル:
setlocal
cd /d %~dp0
File.exe
コードは短いですが、理解するのは簡単ではありません。このFile.exeとは何ですか?現在のディレクトリパスは%〜dp0に保存されていますか? –
@IvailoBardarovここに答えがあります:https://stackoverflow.com/a/18310141/5259296 –
この回答は実際に質問に答えると思います。名声。 – macetw
あなたの.batファイル内:
set mypath=%cd%
あなたは今.bat
ファイルへのファイルパスを参照するために変数%mypath%
を使用することができます。パスを確認するには正しいです:たとえば
@echo %mypath%
、ファイルは以下の内容でDIR.bat
と呼ばれるディレクトリg:\test\bat
から
set mypath=%cd%
@echo %mypath%
Pause
実行はDOSコマンドウィンドウにそのパスをエコーします。
これは最も簡単で簡単な解決策です – Nani
質問へのすべての回答、特に受賞者だけでなく、上位の投票者も読んでください。あなたの掲示されたリンクの最高得点の答えがあなたの質問にすでに答えています。 – dbenham
バッチファイル名を入力するときにc:\にいる場合、c:\は%cd%が出力するものです。 – foxidrive