私はこのコードを持っています:
FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) do (
IF NOT EXIST %%d:\ (
echo Free drive %%d
set D=%%d:
)
)
echo d=%D%
echo Using %D% to map remote drive
subst %D% /d
subst %D% \\path_to_drive
この後、D
変数を使用して空きドライブをマップしています。問題は、これを最初に実行してドライブをマップしようとすると、スクリプトは D 変数が未定義であるか、何も含まれていないと見なすことです。スクリプトの終了時に値を出力すると、次のようになります。
set D
ドライブが見つかり、その値が得られたことがわかります。スクリプトをもう一度実行すると、期待どおりに動作します。バッチが変数が未定義であると考え、スクリプトの実行が終了した後、値があることに気が狂います。D
また、これは変数が使用される唯一の部分でありALWAYS
、少なくとも 1 つの空きドライブが存在することを付け加えたいと思います。そのため、使用可能なドライブがないという事実は正しくありません。
編集: ドライブのマップに使用する行を追加しました。