Windows 批处理脚本未按预期工作

Windows 批处理脚本未按预期工作,windows,batch-file,cmd,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 cr

我试图找到驱动器号并在每个驱动器中创建一个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中为所有驱动器创建

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

没有明显的理由将值分配给
结果
,即使这样,您也需要调用
延迟扩展
并使用
!结果而不是
%result%
(请参阅有关
延迟扩展的项目

此外,就风格而言,虽然
%%
似乎有效,但文档仅支持(区分大小写的)字母,而且Microsoft始终有可能“修复”该“问题”。

相反,请参阅。
for /f "tokens=4 delims= " %%# in ("%%a") do (
  if "%%~#" equ "created" (