コマンド プロンプトを使用して、ファイルの名前をプレフィックス「g_x_」で変更したいと考えています。元のファイル名の構造は次のとおりです。
000_1565.7k
私が試してみました:
ren *.7k g_x_*.7k
そのコードはファイルの名前を「g_x_1565.7k」に変更しますが、ファイルの名前を「g_x_000_1565.7k」にする必要があります
コードが元のファイル名の一部を削除している理由について何か考えはありますか?
ありがとう、
DH
コマンド プロンプトを使用して、ファイルの名前をプレフィックス「g_x_」で変更したいと考えています。元のファイル名の構造は次のとおりです。
000_1565.7k
私が試してみました:
ren *.7k g_x_*.7k
そのコードはファイルの名前を「g_x_1565.7k」に変更しますが、ファイルの名前を「g_x_000_1565.7k」にする必要があります
コードが元のファイル名の一部を削除している理由について何か考えはありますか?
ありがとう、
DH
@ECHO OFF
SETLOCAL
FOR /f "delims=" %%a IN (
'dir /b /a-d *_*.7k ^|findstr /v /b /l "g_x_" '
) DO (
REN "%%a" "g_x_%%a"
)
GOTO :EOF
はdir
一致するファイル名を検出し*_*.7k
、これは にパイプされ、最初のリテラル ( ) 文字列( )FINDSTR
と一致しない ( ) 名前のみを許可します。パイプの前のキャレット ( ) は、パイプが によって実行されるコマンドの一部であり、へのパラメータではないことを CMD に伝えるために必要です。/v
/l
"g_x_"
/b
^
for
dir
結果のファイル名は に割り当てられ%%a
、先頭に追加され、名前が変更されます
このアプローチでは、最初に既存のファイル名のリストを作成し、次にそのリストを処理します。その場で名前を変更しようとすると、ファイル aaa_bbb.7k が g_x_aaa_bbb.7k に名前変更され、さらに g_x_g_x_aaa_bbb.7k に名前変更される可能性があります...
これは @PeterWright ソリューションの修正版ですが、必要に応じてスイッチを追加/s
してサブディレクトリを処理することもできます。DIR
現状では、名前変更コマンドを画面にエコーするだけです。したがって、画面に表示echo
される内容が気に入った場合は、を削除して名前変更を有効にしてください。
@ECHO OFF
FOR /f "delims=" %%a IN (' dir /b /a-d *_*.7k ') DO (
echo REN "%%a" "g_x_%%~nxa"
)
pause