@ECHO OFF
SETLOCAL
SET sourcedir=c:\sourcedir
FOR /r "%sourcedir%" %%i IN (*.*) DO (
FOR %%n IN ("%%~ni") DO IF NOT "%%~xn"=="" IF NOT EXIST "%%~dpni" ECHO REN "%%~fi" "%%~ni"
FOR %%n IN ("%%~ni") DO IF NOT "%%~xn"=="" IF EXIST "%%~dpni" ECHO CAN NOT REN "%%~fi" "%%~ni"
)
GOTO :EOF
このバッチは、タスクを完了する必要があります。
sourcedir
をルートとするツリー内の各ファイルについてNAME
、ファイル自体に「拡張子」が含まれていて、元の拡張子のないファイル名が存在しない場合は、ファイルの名前を変更します。そうすれば、...picture.jpg.doc
が見つかった場合、 が...picture.jpg
存在しない場合にのみ名前変更が行われます。
名前を変更するコマンドは単にECHO
ed です。ECHO
名前の変更を有効にするには、キーワードを削除する必要があります-それが目的であることを確認した後。
既存のファイルが原因で名前を変更できなかったことを報告する 2 行目を追加しました。
単純な名前変更ができない場合に備えて名前を変更するように修正。
注意 - このバージョンはすぐに名前を変更します -ECHO
ファイルの名前を変更すると、メインの名前変更の実行で異なる結果が生じる可能性がある場合に、そのようなリストを提供するのはナンセンスであるため、最初にリストを提供する必要はありません。
@ECHO OFF
SETLOCAL
SET sourcedir=c:\sourcedir
FOR /r "%sourcedir%" %%i IN (*.*) DO (
FOR %%n IN ("%%~ni") DO IF NOT "%%~xn"=="" IF EXIST "%%~dpni" (
SET renreq=Y
FOR %%a IN (new alt extra another 1 2 3 4 5 6 7 8 9) DO IF DEFINED renreq (
IF NOT EXIST "%%~dpi%%~nn_%%a%%~xn" (
REN "%%~fi" "%%~nn_%%a%%~xn"
SET "renreq="
)
)
IF DEFINED renreq ECHO CAN NOT REN "%%~fi"
) ELSE (
REN "%%~fi" "%%~ni"
)
)
GOTO :EOF
当然のことながら、必要に応じて「その他」のリストを拡張できます。