0

USBドライブをチェックするはずのこのコードブロックがあります。次に、それらをユーティリティドライブの1つとしてタグ付けするファイルがある場合、それらに対して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 に答える