0

アルファ文字のサフィックスを追加して、多数のファイルの名前をバッチで変更しようとしていますが、特定の範囲でのみです。例: ファイル 126.pdf は 126A.pdf、ファイル 127.pdf は 127B.pdf、ファイル 128.pdf は 128A.pdf、ファイル 129.pdf は 129B.pdf などの名前に変更する必要があります。これを実行できる既存のソフトウェアも高く評価されます。ありがとう!

4

3 に答える 3

1

次のことを試すことができます。

@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET suffixes=AB
FOR %%I IN (*.pdf) DO (
  RENAME "%%I" "%%~nI!suffixes:~0,1!.*"
  SET suffixes=!suffixes:~1!!suffixes:~0,1!
)

suffixes変数は、名前変更で使用できるすべてのサフィックスの「配列」に設定されます。

ファイルを反復処理するとき、配列の最初の接尾辞が選択されて新しい名前が形成されます。次に、配列内の接尾辞が交換されるため、次の反復ではもう一方が最初になります。

このソリューションは、任意の数のサフィックスで機能します。

于 2012-07-15T18:48:27.987 に答える
1
setlocal EnableDelayedExpansion
rem Define the set of replacements
for %%a in ("126=126A" "127=127B" "128=128A" "129=129B") do set %%~a
rem Achieve the replacements
for %%a in (*.pdf) do (
   if defined %%~Na (
      ren "%%a" "!%%~Na!.pdf"
   )
)

以前のプログラムは、リクエストで提供された例に基づいています。おそらく、別のより正確な方法で名前変更規則を定義すると、プログラムはまったく異なるものになる可能性があります!

于 2012-07-15T17:19:02.137 に答える
0

FOR ループを使用して、個々のファイル名を調べることができます。

setlocal EnableDelayedExpansion
for %%A in (*.pdf) DO (
  echo Filename=%%A
  set name=%%~nA
  set "prefix="
  if !name! == 123 set prefix=A
  if !name! == 999 set prefix=B
  echo rename "%%A" to "!name!!prefix!.pdf"
  ren "%%A" "!name!!prefix!.pdf"
)
于 2012-07-15T09:59:58.527 に答える