我已经有了这个代码块,我们应该检查USB驱动器,如果他们有一个文件将它们标记为我的一个实用程序驱动器,它会在它们上运行robocopy同步来制作确定他们是最新的。
问题是它没有正确评估文件的路径。如果我echo "!curDrive!\file.txt"
打印\file.txt"
脚本的相关(清理/匿名)位是:
@echo off
Setlocal EnableDelayedExpansion
for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=2 and access=0" get name /format:value') DO (
SET "curDrive=%%d"
echo Looping variable set to %%d
echo Current drive set to !curDrive!
if exist "!curDrive!\file.txt" (
...
)
)
我已经调试过的回声,我得到了所有迭代的预期输出,例如,
Looping variable set to L:
Current drive set to L:
答案 0 :(得分:2)
试试这个:
@echo off
Setlocal EnableDelayedExpansion
for /f %%d in ('wmic logicaldisk where "drivetype=2 and access=0" get name^|find ":"') DO (
SET "curDrive=%%d"
if exist "!curDrive!\file.txt" (
Echo found it.
) ELSE (
Echo File not found.
)
)
您正在返回需要过滤的额外回车。
答案 1 :(得分:0)
这是您可以在已定义的系统中使用的另一种方法,在驱动器上查找唯一文件,然后运行robocopy。添加其余的驱动器号。
@echo off
for %%a in (c d e f g h i j) do if exist "%%a:\unique-file.txt" echo found the file.