(Result) フォルダーの横に .bat ファイルがあります。
フォルダーには、名前の異なる .jpg ファイルが含まれています。
このフォルダー内のすべてのファイルの名前を変更する .bat ファイルを作成しようとしています。
うまくいきますが、完全には機能しません。問題は次のとおりです。
これは、ファイルが入っているディレクトリ内でのみ機能します。
(これが機能するには、.bat ファイルと、その横にファイルがあるフォルダーが必要です)。
setlocal enabledelayedexpansion
set "count=1000"
set a="Result\*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
答え1
解決策はここにあります。
パスを書いてフォルダに移動するだけでcd / d Result
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
SetLocal 遅延拡張を有効にする記号による変数の展開(!)
cd / d 結果結果フォルダに移動
「count = 1000」を設定しますゼロの数をマークした変数ファイル-001.jpg
a = "*.jpg" を設定します変数は、探しているファイルを示します。
(dir /b /o:-d /tc %a%
)
ディレクトリ- ファイルとサブディレクトリのリストを表示します。次に、並べ替えます。
/b- ファイル名のみを表示します。
/o:-d- 表示されるファイルのリストを逆順(最新から古い順)で並べ替えます。
/tc- ファイルの作成時間で並べ替えます。
%a%- 変数を呼び出します。
使用バックqファイル名に引用符を使用する機能を設定しますこんな感じ> 「
バッククォートで囲まれた文字列をコマンドとして実行することを指定しますこんな感じ> `、
一重引用符で囲まれた文字列は文字列内のコマンドのようなものですこんな感じ> '。
デリミット = xxx区切り文字のセットを指定します。デフォルトのスペースとタブの区切り文字セットを上書きします。
答え2
あなたの質問は私にはよく分かりません(私の英語は下手で下手です)。それが何なのか理解できません。
これは、ファイルが入っているディレクトリ内でのみ機能します。
(これが機能するには、.bat ファイルと、その横にファイルがあるフォルダーが必要です)。
- 再帰的に名前を変更したいのだと思いますが、そのための編集は次のとおりです。
@echo off
set "_cnt=1000" && cd /d "%~dp0Result"
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
')do set /a "_cnt+=1" && cmd /v /c "ren "%%~fI" file-!_cnt:~-3!.jpg"
%__AppDir__%timeout.exe /t -1 & goto :EOF
1.bat があるフォルダを入力します:
cd /d "%~dp0Result"
2.ファイルを再帰的にリストするdir ... /b /s
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
3.会計士を増やす
set /a "_cnt+=1"
4.カウンターを使用してループでファイルの名前を変更する
cmd/v/c "ren "%%~fI" file-!_cnt:~-3!.jpg"
観察。もし、あなたが探しているものと違っていたら、お知らせください。
- あなたの回答に基づいた代替案
@echo off
setlocal enabledelayedexpansion
set "_cnt=100" && cd /d "%~dp0"
for /f tokens^=* %%I in ('dir/b/o:-d/tc/b/s "Result\*.jpg"
')do rename "%%~fI" file-!_cnt:~-3!.jpg & set /a "_cnt+=1"
%__AppDir__%timeout.exe /t -1 & endlocal & goto :EOF