【问题标题】:Path with spaces in for loop of a batch file批处理文件的for循环中带有空格的路径
【发布时间】:2012-08-29 02:40:44
【问题描述】:

我正在尝试这个命令:

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:\my work”之类的空格,我会收到错误消息。虽然我使用了 usebackq 和反引号而不是单引号。

错误信息是:'D:\my' 不是内部或外部命令、可运行程序或批处理文件。

我的命令有什么问题?

【问题讨论】:

  • 我看不出该代码有什么问题会产生您报告的错误。不应该需要USEBACKQ,但它不会受到伤害。您确定以上是您脚本中的确切命令吗?
  • 尝试使用echo on 而不是off 运行它,看看是否能发现任何错误。

标签: batch-file


【解决方案1】:

如果这不起作用:

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

试试这个:

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

【讨论】:

  • 丢失的~ 在我之前对问题的编辑中被无意中删除 - 我已将其恢复为问题。 %~dp0 已经有一个尾随 \ - 您不需要添加另一个。除非脚本从根目录运行,否则添加一个额外的不会有任何影响。
  • @dbenham 嗯。我从来没有注意到这一点。
  • @tcc 添加了不同的建议。
猜你喜欢
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多