setlocal の目的はわかりませんが、for ループで複数のコマンドを必要とする別のスクリプトの例で見つけました。
Filelist.txt には、共有への完全なファイル パスを含むファイルのリストが保持されます。
例: \\FileShare\Division\Project\file.txt
setlocal enabledelayedexpansion
for /f "delims=" %%i in (filelist.txt) do (
mkdir "D:\Archive\%%~dpi"
move "%%i" "D:\Archive\%%i")
endlocal
このスクリプトは、filelist.txt 内のファイルを (1 行ずつ) 取得し、パスのディレクトリ構造をコピーしてから、ファイルを移動します。上記の例を使用すると、ディレクトリ D:\Archive\FileShare\Division\Project\ が作成され、ファイルfile.txtがそのディレクトリに移動されます。
ここで見つけたさまざまなタスクの既存の例から、これをつなぎ合わせました。掃除のコツは?
編集:以下のウィルからのコメントに対処するには。このスクリプトは、1 年以上アクセスされていないファイルから生成されたレポートを処理するために作成されました。これが、フォルダー構造と他のすべてのファイルをそのまま維持したかったため、ファイルのリストから作業する必要があった理由です。これをスクリプトに統合する方法があれば、それは素晴らしいことです!