0

複数のフォルダの名前をバッチで変更する方法を探しています。基本的に、先頭にゼロを埋め込んで6桁にする必要があります

例:

123 ---> 000123

22 -> 000022

5678 --> 005678

私がそれを行う方法を知っている唯一の方法は次のとおりです。

for /f %f in ('dir /b') do ren "%f" "0%f"  but this only pads it with 1 zero

助けてください。どんな方向でも感謝しますありがとう

4

1 に答える 1

0

バッチ ファイルでは、次のコードを使用できます。

@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /F "delims=" %%I in ('dir /AD-L /B 2^>nul ^| %SystemRoot%\System32\findstr.exe /R /X "[0123456789][0123456789]*"') do (
    set "FolderName=00000%%I"
    set "FolderName=!FolderName:~-6!"
    if not !FolderName! == %%I ren %%I !FolderName!
)
endlocal

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

  • dir /?
  • echo /?
  • endlocal /?
  • findstr /?
  • for /?
  • if /?
  • ren /?
  • set /?
  • setlocal /?

およびの説明については、コマンド リダイレクト演算子の使用に関する Microsoft のドキュメントを参照してください。Windows コマンド インタープリターがこのコマンド ラインを処理してからコマンドFORを実行する前にこのコマンド ラインを処理するときに、 FORコマンド ラインでキャレット文字を使用してリダイレクション演算子をエスケープする必要があります。バックグラウンド withおよびコマンド ラインが追加の引数として追加されます。2>nul|>|^dirfindstrcmd.exe /c'

于 2021-11-04T07:30:33.293 に答える