这是我目前所拥有的
@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"