我正在编写一个循环通过PC上本地驱动器的批处理文件,并测试驱动器根目录中是否存在文件。如果该文件存在,我想要做一些事情&如果它不存在我想做其他事情,但If Exists声明不起作用。这是代码片段:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /F "tokens=2 delims==" %%D in ('"wmic logicaldisk where drivetype=3 get name /format:value"') do (
echo %%D
if exist %%D\file.txt (
echo Processing Drive %%D
Do Something ...
) else (
Do Something Else ...
)
)
goto :EOF
如果我将If块移出For循环并将其标记为批处理文件中的子程序并从For循环内调用它可以正常工作,但我想了解它为什么没有&#39 ;在For循环内部工作。
答案 0 :(得分:1)
如果您使用echo %%D
更改echo ...[%%D]...
行,您将会看到它失败的原因。
WMIC输出在其输出中包含需要删除的附加回车
@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /F "tokens=2 delims==" %%a in (
'"wmic logicaldisk where drivetype=3 get name /format:value"'
) do for %%D in (%%a) do (
echo ....[%%D]....
if exist %%D\file.txt (
echo Processing Drive %%D
) else (
echo Skipping Drive %%D
)
)
goto :EOF
在这种情况下,aditional for
将处理删除附加CR的问题。