【问题标题】:Batch script not working as expected批处理脚本未按预期工作
【发布时间】:2016-04-01 07:17:39
【问题描述】:

我正在尝试查找驱动器号并在每个驱动器中创建一个 tmp.txt 文件 如果我能够创建文件,它应该打印其他创建的文件。低于我所做的但没有按预期工作。

del volumes.txt
del test.log
mountvol | findstr :\ >> volumes.txt
for /F "delims= " %%b in (volumes.txt) do (
  for /f  "usebackq tokens=* delims=" %%a in (`fsutil file createnew %%btmp.txt 1 2^>^&1`) do (
    for /f "tokens=4 delims= " %%# in ("%%a") do set "result=%%~#" (
      if %result% equ "created" (
        echo File creted >> test.log
      ) else (
        echo Failed to create >> test.log
      )
    )
  )
)

即使在驱动器中创建了 tmp.txt,它也会在 test.log 中显示为所有驱动器创建失败

【问题讨论】:

标签: windows batch-file cmd


【解决方案1】:

改变

for /f "tokens=4 delims= " %%# in ("%%a") do set "result=%%~#" (
  if %result% equ "created" (

for /f "tokens=4 delims= " %%# in ("%%a") do (
  if "%%~#" equ "created" (

没有明显的理由将值分配给result,即便如此,您仍需要调用delayedexpansion 并使用!result! 而不是%result%(请参阅关于delayedexpansion 的无尽So 项目。

此外,就风格而言,虽然%%# 似乎可以工作,但文档仅支持(区分大小写的)字母,而且微软总是有可能“修复”“问题”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 2016-09-07
    • 1970-01-01
    • 2020-12-17
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多