此批处理脚本应该检测可移动驱动器,并通过以下过程循环每个驱动器:格式,文件到。问题是它只对一个驱动器执行此操作。例如,我可以放入两个驱动器,它将检测它们并处理它们的循环两次。这个问题与正在更新的驱动器名称的变量有关,但我并不是所有的批处理脚本。如果这个网站上已有另一个答案,我不会知道它的样子,因为我不知道关于这些命令的一切(我已经看了所有给出的建议)。如果这是一个重复的问题,我会道歉。只要指出我正确的方向,我就会在路上!
@echo off
setlocal enabledelayedexpansion
for /F "tokens=1*" %%a in ('fsutil fsinfo drives') do (
for %%c in (%%b) do (
echo Starting loop with %yyy%
for /F "tokens=3" %%d in ('fsutil fsinfo drivetype %%c') do (
if %%d equ Removable (
echo Drive written to is %yyy%
format /y %yyy:~0,2% /fs:FAT32 /v:LCM2014 /q
)
set yyy=%%c
echo Ending loop with %yyy%
)
)
)
答案 0 :(得分:2)
在块语句(a parenthesised series of statements)
中,解析整个块并执行然后。块中的任何%var%
将在解析块时被该变量的值替换 - 在块执行之前 - 同样的事情适用于FOR ... DO (block)
。< / p>
因此,IF (something) else (somethingelse)
将在遇到%variables%
时使用IF
的值执行。
解决此问题的两种常见方法是1)使用setlocal enabledelayedexpansion
并使用!var!
代替%var%
来访问已更改的var
或2}值以进行调用一个子程序,用于使用更改的值执行进一步处理。
您发布的代码显然遇到yyy
问题。尝试将%yyy%
替换为!yyy!
并查看差异。