@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\abcd*" '
) DO (
SET "name=%%~na"
SET "name=9!name:~4!"
FOR /L %%z IN (0,1,9) DO SET "name=!name:%%z=!"
IF NOT DEFINED name ECHO(COPY "%sourcedir%\%%a" "%destdir%\"
)
GOTO :EOF
あなたの状況に合わせてsourcedir
とdestdir
の設定を変更する必要があります。
必要なCOPYコマンドは、テストのために単なるECHO
です。 コマンドが正しいことを確認したら、をECHO(COPY
からCOPY
に変更して、実際にファイルをコピーします。レポートメッセージを抑制するために>nul
を追加(例。1 file copied
)
delayedexpansion
モードを設定した後、ディレクトリなし/b
基本モード/a-d
で、ソースディレクトリのディレクトリスキャンを実行し、%%a
に発見された各ファイル名を割り当てます。
セットname
fomの名前部分のみ%%a
の場合は、最初の4文字を削除し、変更した名前に9
を含めます。
次に、結果から0
~9
をすべて削除し、name
が空になったらコピーを実行します。文字列name
がfor /L
ループの最後の繰り返しまで空でないように、9
が追加されていることに注意してください。
「コピー」%ProgramFiles(x86)%\ Source Folder \ xxx * "" C:\ Target Folder \ "'という、xxxxで始まるすべてのファイルをコピーするのに単にワイルドカード '*'を使用するのはどうですか?この単純なコマンドラインでは、コピーしたファイルのファイル名に 'xxxx '以上の文字が含まれているかどうかはチェックされず、これらの文字はすべて0から9までの数字です。しかし、おそらく、ソースフォルダに 'xxxx'で始まるファイルは1つしかないので、追加のファイル名チェックの仕組みは全く必要ありません。あなたの質問はそれを知るには広すぎます。 – Mofi