バッチファイルでは、プログラムの1行出力に変数を設定したい - 複数の質問とインターネットリソースで説明されているタスク。/F:ファイル名とパラメーターの両方のスペース
私はあなたが、私が実行するプログラムのパスを見ることができるように、FileVersion.exe
にスペースが含まれており、
FileVersion.exe
に渡す2番目のパラメータがフルに含まれているコマンドに
"D:\__My Program\___My Program\Folder1\Folder2\..\..\FileVersion\FileVersion\bin\Release\FileVersion.exe" /n "D:\__My Program\___My Program\Folder1\Folder2\bin\Deploy\My Program.exe"
を実行したい私の特定のタスクに
パスもスペースで区切ります。
上記のコマンドをコマンドラインで直接呼び出すか、バッチファイル内でCALL
を使用すると、プログラムが正しく実行され、予想される出力が出力されます。
さて、私は次のバッチコマンドを使用したプログラムを実行する出力
FOR /F "usebackq tokens=* delims=" %%i IN (`"D:\__My Program\___My Program\Folder1\Folder2\..\..\FileVersion\FileVersion\bin\Release\FileVersion.exe" /n "D:\__My Program\___My Program\Folder1\Folder2\bin\Deploy\My Program.exe"`) DO (
echo %%i
)
をキャプチャするFOR documentationは私がコマンドの前後に引用符をバック使って、これを正しくしたと思う
usebackq Use the alternate quoting style:
- Use double quotes for long file names in "filenameset".
- Use single quotes for 'Text string to process'
- Use back quotes for `command to process`
を語ります、およびファイル名の前後に引用符を使用します。
しかし、コールは(ドイツ語からの翻訳)メッセージ私は、これは、スペースをエスケープして、問題を指すと思わ
The command "D:\My" is either incorrect or couldn't be found.
で失敗します。
奇妙な部分:私はexeファイルのパスを置き換えるか、パスがのsansスペースのパラメータを置き換えると動作します。だから、両方の
FOR /F "usebackq tokens=* delims=" %%i IN (`FileVersion.exe /n "D:\__My Program\___My Program\Folder1\Folder2\bin\Deploy\My Program.exe"`) DO (
echo %%i
)
と
FOR /F "usebackq tokens=* delims=" %%i IN (`"D:\__My Program\___My Program\Folder1\Folder2\..\..\FileVersion\FileVersion\bin\Release\FileVersion.exe" /n Test.exe`) DO (
echo %%i
)
作品。
引用符で囲まれた2つの文字列が同じコマンドで動作しないのはなぜですか?どのように修正できますか?
私は引用符をバック使用目的を確認することを確認していませんよ! – Compo
[this](https://stackoverflow.com/q/22636308/2861476)が問題を解決するかどうかを確認してください。 –
Compo:これは違いはありません。 @MCNDあなたのです。私はそれに答えたリソースがなければならないと確信していましたが、例を掘り下げながら見つけられませんでした。ありがとう。私はそれを重複としてマークします。 – Jens