0

我有这段代码应该检查 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:
4

2 回答 2

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. 
    )
)

您正在返回需要过滤掉的额外回车。

于 2014-01-17T16:52:29.953 回答
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.
于 2014-01-18T01:54:12.783 回答