1

15,000 を超えるファイルを移動する必要がある場合があります。重複が多いため、MD5 で解析した結果、入力ファイル (files.txt) にファイル名のリストができました。そこから読み取り、リストされたファイルを新しいディレクトリにコピーします。私は、誰かが 2 部構成の単純なスクリプトとして作成した古いバッチを取り出し、それを変更しました。

スペースのないファイルで機能します。これですべてのファイル名をカバーするにはどうすればよいですか? また、これをすべて1つのファイルに入れることはできませんか?

Cstart.bat:

for /f %%x in (files.txt) do call copyfiles.bat

コピーファイル.bat:

set filename=%1
copy "C:\temp\%filename%" "C:\temp\pruned files\"
4

2 に答える 2

1

あなたの現在のコードはfilenametoさえ渡さないcopyfiles.batので、スペースの有無にかかわらず動作しません。(それを確認する必要がある場合は、行のecho %1 %filename & pause前に追加して実行します。)copycopyfiles.batcstart.bat

そうは言っても、すべてを1つのファイルで簡単に実行できます。

for /f %%x "tokens=1 delims=*" in (files.txt) do copy "C:\Temp\%%x" "C:\Temp\pruned files\%%x"

copy動作することを確認するには、上記の行の を に置き換えてecho、コマンド プロンプトから実行します。

test.txtこれを、次の内容を含むという名前のテキスト ファイルでテストしました。

One.txt
Two.txt
Three.txt
And Four.txt

これを含む名前のバッチファイルを使用testcopy.bat

@echo off
for /f "tokens=1 delims=*" %%x in (test.txt) do echo "C:\Temp\%%x" "C:\Temp\test this\%%x"

上記のテストでは、次の出力が示されました。

e:\TempFiles>testcopy
"C:\Temp\One.txt" "C:\Temp\test this\One.txt"
"C:\Temp\Two.txt" "C:\Temp\test this\Two.txt"
"C:\Temp\Three.txt" "C:\Temp\test this\Three.txt"
"C:\Temp\And Four.txt" "C:\Temp\test this\And Four.txt"
于 2013-08-08T18:17:32.113 に答える
0
for /f "usebackqdelims=" %%x in ("my file list.txt") do copy "C:\temp\%%~x" "C:\temp\pruned files"
于 2013-08-08T19:03:47.170 に答える