【问题标题】:Weird behavior in for for loop in windows 10Windows 10 for for 循环中的奇怪行为
【发布时间】:2019-06-16 01:02:43
【问题描述】:

我有一个简单的脚本(它在 Windows 服务器上运行良好) 在 Windows 10 上运行它会产生一个额外的结果。 该脚本基本上执行以下操作。 它会查找所有带有 .pak 扩展名的文件,并确保它们也有一个 .bod 文件。 所以例如 file1.pak 应该有一个 file1.bod

当我运行脚本时

echo off
for /f %%f in ('dir /b /s /a:-d *.pak') do (
if not exist %%~dpnf.bod echo "%%~dpnf.pak has no bod"
)

我在 windows10 中得到以下结果,但我预计没有结果

C:\temp\pakbodtest>echo off
"C:\temp\pakbodtest>echo.pak has no bod"

这里的这一行是出乎意料的 有人知道怎么解决吗?

"C:\temp\pakbodtest>echo.pak has no bod"

【问题讨论】:

  • 无法复制(在这里工作正常)。 (除了你可以简化为echo "%%~ff has no bod" 并且你应该使用delims= 能够处理带空格的文件名)
  • 我会把它改成@For /F %%A In ('Dir /B/S/A-D *.pak 2^>Nul') Do @If Not Exist "%%~dpnA.bod" Echo "%%~dpnA.pak has no bod"
  • 我个人会在这种情况下使用FOR /RFOR /R %%G in (*.pak) do IF NOT EXIST "%%~G.bod" echo "%%G" has no bod
  • 你每次都明白吗?您的目录中有哪些文件?也许一个符号链接在欺骗你?
  • @stephan 2^>Nul 似乎在这里为我工作

标签: batch-file for-loop windows-10 echo


【解决方案1】:

谢谢大家@stephan 对 2^>Nul 的看法是正确的 感谢cmets

【讨论】:

  • 其实是@Compo 推荐了2>nul
猜你喜欢
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
相关资源
最近更新 更多