1
在批處理文件中,我想將一個變量設置爲程序的單行輸出 - 這是一個在多個問題和互聯網資源中解釋的任務。對於/ F:文件名和參數中的空格
在我具體的任務,我想執行的命令
"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"
正如你所看到的,因爲我要執行的程序路徑,FileVersion.exe
包含空格,並交給FileVersion.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
)
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
)
工作。
爲什麼兩個引號轉義的字符串不能在同一個命令中工作,我該如何解決?
我不知道,我看到使用反引號的宗旨! – Compo
看看[this](https://stackoverflow.com/q/22636308/2861476)是否解決了您的問題。 –
Compo:這沒有什麼區別。 @MCND你的。我確信必須有一個資源來回答它,但在篩選示例時我沒有找到它。謝謝。我會將其標記爲重複。 – Jens