我正在尝试查找驱动器号并在每个驱动器中创建一个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
答案 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可能总是有这样的可能性。修复" "问题"。