批处理脚本无法按预期工作

时间:2016-04-01 07:17:40

标签: windows batch-file cmd

我正在尝试查找驱动器号并在每个驱动器中创建一个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
      )
    )
  )
)

它显示无法为test.log中的所有驱动器创建,即使在驱动器中创建了tmp.txt

1 个答案:

答案 0 :(得分:1)

更改

doIt

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似乎有效,但文档仅支持(区分大小写)字母表,并且Microsoft可能总是有这样的可能性。修复" "问题"。