Windows 8 找到所有驱动器并在每个驱动器上运行命令

Windows 8 找到所有驱动器并在每个驱动器上运行命令

这是我目前所拥有的

@echo off
for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=3" get name format:value') do echo %%d

输出正确

@echo off
FORFILES /P C:\ /S /M *.* /C "cmd /c echo @path"

输出正确

@echo off
for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=3" get name format:value') do FORFILES /P %%d\ /S /M *.* /C "cmd /c echo @path"

输出似乎报告系统上每个驱动器的无效驱动器,但我无法让它将 %%d 处理为 C:\ D:\ 等,

有什么建议

答案1

WMIC 生成 unicode 输出,并且 FOR /F 错误地将输出转换为 ANSI,使得<CR>每行输出末尾都有一个额外的回车符 ( )。

因此你的驱动器变成C:<CR>\-回车符弄乱了命令。

消除不需要的字符的一种方法是添加一个额外的 FOR 循环,<CR>如果存在的话,该循环会修剪行尾的一个尾随字符。

此外,除非 Windows 8 与所有早期版本不同,否则 WMIC 要求在 FORMAT 选项前加一个斜杠,例如/format:value

@echo off
for /f "tokens=2 delims==" %%A in (
  'wmic logicaldisk where "drivetype=3" get name /format:value'
) do for %%B in (%%A) do forfiles /p %%B\ /s /m *.* /c "cmd /c echo @path"

相关内容