0

私は次のことを行うためのスクリプトを考え出そうとしていますが、Windowsコーディングの経験がありません。

私は次のことを達成しようとしています:

複数の画像を含むフォルダがあり、次のようなシーケンスで名前を変更したい

2012.000.value

値は、スクリプトが実行される前に値を入力できるようにしたいと思います。最初の画像はその番号になり、次にその値で画像のフォルダーの名前を変更してカウントアップします。

一部の画像にはファイル名が付けられてOriginalいる場合があり、その値を保持したいのですが、上記のシーケンスをファイル名に挿入します。

画像は.jpg

4

1 に答える 1

1
@echo off
setlocal enabledelayedexpansion
set count=0
for /d %%x in (%date:~-4%.000.???) do (
  for /f "tokens=3 delims=." %%y in ("%%x") do (
    set count=%%y
    for %%z in (%%x\*.jpg) do (
      ren %%~dpnxz !count!.jpg
      set /a count=count+1
    )
  )
)
endlocal

上記のコードは、ディレクトリがの形式になることを前提としています%CurrentYear%.000.???。複数年が必要な場合は、別のコードが必要になります。

編集:000.jpgこのコードはまたはを出力しません001.jpg、それは0.jpgまたはを出力します1.jpg。下部のコードはそれを処理します。

また、の元のファイル名を完全に削除し、###.jpg任意の値で機能します。元のファイル名を次のように保持する場合は、行を次のように#-FileName.jpg変更します。ren

      ren %%~dpnxz !count!-%%~nz.jpg

コードはファイルを並べ替えませんが、作成された順序でファイルを処理します。アルファベット順にしたい場合は、for %%z in (%%x\*.jpg) do (行を次のように変更します。

  for /f "tokens=*" %%z in ('dir /o:n %%x\*.jpg') do (

編集:このコードは、ユーザー入力によって制限された、一貫した長さの数値を出力します。

このコードを使用するには、最大数にする文字数を渡す必要があります。それで...

IMG 2

...ファイルの名前をからに変更でき00.jpgます99.jpg...

IMG 4

...ファイルの名前をから0000.jpgに変更できます9999.jpg

IMG.BAT

@echo off
setlocal enabledelayedexpansion
:: Set how many characters the number can be. IE 00 = 2, 0000 = 4
set places=%1
set count=0
set zeros=
for /l %%x in (1,1,%places%) do set zeros=!zeros!0
for /d %%x in (%date:~-4%.000.???) do (
  for /f "tokens=3 delims=." %%y in ("%%x") do (
    set count=%%y
    for %%z in (%%x\*.jpg) do (
      :: Make give !count! leading 0's if nessicary
      set count=%zeros%!count!
      :: Trim !count! down to a 4 digit number
      set count=!count:~-%places%!
      ren %%~dpnxz !count!.jpg

      :: Trim ALL 0's on the left to avoid calculation problems.
      set /a n=places-1
      for /l %%a in (0,1,!places!) do if "!count:~0,1!"=="0" set count=!count:~1!
      set /a count=count+1
    )
  )
)
endlocal

Windowsエクスプローラーは通常、ファイルをアルファベット順に並べ替えるため、この方法を好みます。これは、次のファイル順序になります。1.jpg 2.jpg 3.jpg 10.jpg 20.jpg

1.jpg
10.jpg
2.jpg
20.jpg
3.jpg

ただし、これらの数字が3文字幅で先行ゼロで固定されている場合、アルファベット順は次のようになります。

001.jpg
002.jpg
003.jpg
010.jpg
020.jpg
于 2012-09-08T02:38:57.100 に答える