2012-09-04 189 views
4

的循環,我想這個命令空間:路徑在一個批處理文件

for /f "tokens=3 usebackq" %%i in (`"%~dp0imagex.exe" /info "%~dp0DVD\sources\install.wim" ^| findstr /c:"Image Count:"`) do set ImageCount=%%i 
echo %ImageCount% 

我得到錯誤,如果路徑%〜DP0包含如空格「d:\我的工作」。儘管我用usebackq和back quote而不是單引號。

錯誤消息是:'D:\ my'不被識別爲內部或外部命令,可操作程序或批處理文件。

我的命令有什麼問題?

+0

的」可能的複製( http://stackoverflow.com/questions/3614658/how-to-handle-spaces-in-path-names-in-for-loop)」。 –

+0

我看不到任何錯誤的代碼,會產生你報告的錯誤。不應該需要USEBACKQ,但它不會受到傷害。你確定以上是腳本中的確切命令嗎? – dbenham

+0

嘗試使用'echo on'運行而不是'off'來查看是否可以發現任何錯誤。 –

回答

2

如果這不起作用:

for /f "tokens=3 usebackq" %%i in (`"%~dp0imagex.exe" /info "%~dp0DVD\sources\install.wim" ^| findstr /c:"Image Count:"`) do set ImageCount=%%i 
echo %ImageCount% 

試試這個:[?批次 - 如何處理在路徑名稱空間中的for循環]

pushd %~dp0 
for /f "tokens=3 usebackq" %%i in (`imagex.exe" /info "DVD\sources\install.wim" ^| findstr /c:"Image Count:"`) do set ImageCount=%%i 
echo %ImageCount% 
popd 
+0

在我之前編輯的問題中,缺少'〜'被無意中刪除了 - 我已將它恢復到問題中。 '%〜dp0'已經有結尾\ - 你不需要再添加一個。除非腳本從根目錄運行,否則添加另外一個腳本不會受到傷害。 – dbenham

+0

@dbenham嗯。我從未注意到這一點。 –

+0

@tcc添加了不同的建議。 –

相關問題