コンピュータのリストを通過し、コンピュータからファイルを読み込み、ファイル名を区切り、コンピュータ名とファイル名の結果をエコーするバッチスクリプトを作成しようとしています。私が抱えている問題は、入れ子になったFOR/Rコマンドでコンピュータ名変数を設定することです。ここにスクリプトがあります:変数付きのFORを入れ子にしました
@ECHO OFF
SetLocal EnableDelayedExpansion
SET LIST=Computers.txt
FOR /F %%A IN (%LIST%) DO (
FOR /R \\%%A\c$\folder1\folder2 %%B IN (*.txt) DO (
FOR /F "tokens=2 delims=." %%C IN ("%%B") DO (ECHO %%A %%C
)
)
)
EndLocal
ファイル名はRB-C1SRC20160716CL.P17.txtのようなものです。だから私が探している結果は
MyPCName P17
ですが、私は空白の結果になります。私が見つけたのは、%% Aはテキストファイルから読み込まれていますが、FOR/Rの%% Aは読み込まれていません。 FORコマンドをエコーすると、FOR/R \ MyPCName \ folder1 \ folder2の代わりにFOR/R \%a \ folder1 \ folder2が表示されます。この内訳は、スクリプトの残りの部分が適切に機能しないようにしています。
UPDATE:
おかげで、正しい方向に私を指しているためaschipflします。私はついにスクリプトを動かすことができました。ここでは作業バージョンは次のとおりです。
@ECHO OFF
SetLocal EnableDelayedExpansion
SET LIST=Computers.txt
FOR /F %%A IN (%LIST%) DO (
SET WKSTN=%%A
CALL :SUB
)
EndLocal
GOTO :EOF
:SUB
FOR /R \\%WKSTN%\c$\folder1\folder2 %%B IN (*.txt) DO (
FOR /F "tokens=2 delims=." %%C IN ("%%B") DO (ECHO %%A %%C
)
)
関連[[バッチコマンドを使用してサブフォルダのサイズを取得する](http://stackoverflow.com/a/38397052) – aschipfl