2016-07-27 2 views
0

名前が少なくとも2桁であるようなフォルダにイメージを一括して名前を変更するタスクが頻繁にあります。 01.jpg,02.jpg,03.jpg ... 140.jpg先頭にゼロが付いたフォルダ内のjpg画像を列挙します

私はバッチファイルを使用してそれを実現したいと思います。
私はいくつかのコードを見つけましたが、最初の8つのイメージの名前を変更しています。

@echo off 
set i=1 

for %%f in (*.jpg) do call :renameit "%%f" 
goto done 

:renameit 
IF 1%i% LSS 1000 SET i=0%i% 

ren %1 %i%.jpg 
set /A i+=1 

:done 
+1

DOSソリューションが必要ですか?あるいは、Windowsのコマンドライン( 'cmd.exe')を使って実行しますか? – Melebius

+0

は、私はあなたが 'それを後でA' /設定したい場合は、変数に先行ゼロを追加してはいけません –

+0

任意のスクリプトを必要とする('設定を参照してください/ ? 'の理由で)。代わりに別の変数を使用してください: '設定新しい= 0%のi%'と 'REN%1%新しい%.jpg' –

答えて

0
@echo off 
set i=1 

for %%f in (*.jpg) do call :renameit "%%f" 
goto :eof 

:renameit 
if 1%i% lss 100 (ECHO ren %1 0%i%.jpg) else (ECHO ren %1 %i%.jpg) 
set /A i+=1 
goto :eof 

一時変数せずに、直接、名前の変更をしました。出力がOKの場合は、ECHOを削除します。

+0

ではありません。実際には数字を変更することさえありません。 –

+0

ご協力いただきありがとうございます。あなたの2つのソリューションを統合して解決策に到達しました。 –

+0

私は他の人のためにここに投稿していますが、答えはあなたに属します –

0

この答えは、ステファンによって投稿回答の参加である

@echo off 
 
set i=1 
 

 
for %%f in (*.jpg) do call :renameit "%%f" 
 
goto done 
 

 
:renameit 
 
IF 1%i% LSS 100 (SET new=0%i%) else (SET new=%i%) 
 
ren %1 %new%.jpg 
 
set /A i+=1 
 

 
:done

1

間違いなく決して1.jpg01.jpgである場合は、このタスクは、バッチファイル内の単一のコマンドラインで行うことができますそのディレクトリにはというファイルがあるディレクトリにはa.jpg,b.jpgなどがありません。

@for %%I in (?.jpg) do @ren %%I 0%%I 

がフォルダに送信し、JPEG画像ファイルを含む1つのまたは複数の選択したディレクトリのコンテキストメニュー(右クリック)を経由して、それを使用してに追加するような、より便利なバッチファイルを作成するには、それがに拡張することができますオプションで1つまたは複数のフォルダパスをパラメータとしてサポートします。

@echo off 
set "Folder=%CD%" 
:NextFolder 
if not "%~1" == "" set "Folder=%~f1" 
if "%Folder:~-1%" == "\" set "Folder=%Folder:~0,-1%" 
for %%I in ("%Folder%\?.jpg") do ren "%%~fI" "0%%~nxI" 
shift 
if not "%~1" == "" goto NextFolder 
set "Folder=" 

このバッチファイルは、デフォルトではカレントディレクトリ内のファイル名として1文字の* .jpgファイルの名前を変更します。しかし、バッチファイルが1つ以上のフォルダパス(検証されていない)で呼び出された場合、バッチファイルは指定されたすべてのフォルダ内の?.jpgファイルの名前を変更します。

バッチファイルに渡されるフォルダパスは、末尾にバックスラッシュの有無にかかわらず、相対パスまたは絶対パスにすることができます。

使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。

  • echo /?
  • for /?
  • goto /?
  • if /?
  • ren /?
  • set /?
  • shift /?

注意:バッチファイルは、フォルダーのパスやファイル名として単一の文字を含む見つかった* .jpgファイルを検証したり、新しいファイルで既に存在するファイルをチェックしたりしないため、100%フェイルセーフではありませんファイル名。ただし、新しい名前のファイルがすでに存在するようなエラーが発生した場合は、エラーメッセージが出力されます。

関連する問題