web-dev-qa-db-ja.com

ファイル名にプレフィックスを追加するWindowsバッチ、なぜ2回追加するのですか?

単純な "hello"プレフィックスをフォルダ内のすべてのpdfファイルに追加するために、このバッチファイルを使用しています。

FOR %%F IN (*.pdf) DO (RENAME "%%F" "hello%%F")

これを「rename.bat」ファイルに保存し、ファイルの名前を変更する必要があるフォルダーに配置しました。次に、「rename.bat」をダブルクリックします。

これはほぼ機能しますが、最初のファイルにはプレフィックスが2回追加されます。

私が持っているフォルダでA.pdf、B.pdf、C.pdfとすると、次のように変換されます。

  • hellohelloA.pdf
  • helloB.pdf
  • helloC.pdf、

バッチファイルの何が問題になっているのか知っていますか?


ファイルが複数あるの場合、常にこれを行うことに気づきました。フォルダ内にファイルが1つしかない場合は問題なく動作しますが、あまり役に立ちません:-)。

7
Marco Demaio

/f 既存のファイルを再キャプチャする問題を削除します。

FOR /f "delims=" %%F IN ('DIR /a-d /b *.pdf')  DO (RENAME "%%F" "hello%%F")
9
Alex K.
@echo off
echo.
echo. Add Whatever Prefix...
echo.
echo. You Want To Add...
echo.
echo. To The Filename...
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.pdf') do (
  set oldName=%%a
  Set newName=%variable%!oldName!
  Ren "!oldName!" "!newName!"
)
exit

これはうまく機能します.....試してみてください...二重プレフィックスはありません...これまでに。

0
Keybrd Cowboy