1

構造化された名前の大きなセットファイルがありstring_int_int_int_string.extension、2番目のintで左ゼロのパディングを7桁にまとめて名前を変更したいと思います。

例:名前stringA_1_2_3_stringB.jpgをに変更しstringA_1_0000002_3_stringB.jpgます。

ここここ、そしてここでいくつかの役立つ投稿を見てきましたが、まだ完全には行っていません。

これが私がこれまでに持っているものです(もちろん、機能していません):

dir /b *.* >temp.txt

for /f "tokens=%%1,%%2,%%3,%%4,%%5 delims=_" %x in (temp.txt) do (
    setlocal enabledelayedexpansion
    set PAD=000000%%k
    set PAD=!PAD:~7!
    ren "%%i_%%j_%%k_%%l_%%m" %%i_%%j_%PAD%_%%l_%%m
)

特に、他の言語やツールではなく、バッチファイルを使用してこれを実行したいと思います。(私はそこにあるさまざまな名前変更ツールを知っています。)

どんな助けでも大歓迎です!

4

2 に答える 2

2
setlocal EnableDelayedExpansion
dir /b *.* >temp.txt
for /F "tokens=1-5 delims=_" %%a in (temp.txt) do (
   set PAD=000000%%c
   set PAD=!PAD:~-7!
   ren "%%a_%%b_%%c_%%d_%%e"  "%%a_%%b_!PAD!_%%d_%%e"
)
于 2012-11-06T19:20:14.200 に答える
0

FINDSTRを使用して、指定したパターンと一致しないファイル名を除外します。合計4つのトークンが必要です。最初の3つ、その後にファイル名の残りが続きます。

@echo off
setlocal disableDelayedExpansion
for /f "tokens=1,2,3* delims=_" %%A in (
  'dir /b /a-d * ^|findstr /r "^[^_]*_[0-9]*_[0-9]*_[0-9]*_[^_]"'
) do (
  set "mid=%%C"
  set "pad=0000000%%C"
  set "start=%%A_%%B"
  set "end=%%D"
  setlocal enableDelayedExpansion
  echo ren "!start!_!mid!_!end!" "!start!_!pad:~-7!_!end!"
  endlocal
)
于 2012-11-07T00:53:36.363 に答える