web-dev-qa-db-ja.com

WindowsはCLIを介して中間ファイル名を一括で変更しますか?

元のファイル

File 15 - Example.txt
File 2 - Example.txt
File 22 - Example.txt
File 3 - Example.txt
File 4 - Example.txt
File 5 - Example.txt

必要な出力

File 15 - Example.txt
File 02 - Example.txt
File 22 - Example.txt
File 03 - Example.txt
File 04 - Example.txt
File 05 - Example.txt

単一のファイルは、renを使用して簡単に名前を変更できます。

ren "File 2 - Example.txt" "File 02 - Example.txt"

Windows renまたはrenameツールを使用して、名前を一括で変更できますか?

13
Sabrina

Windows renまたは名前変更ツールで一括で名前を変更することはできますか?

はい。ただし、バッチファイルが必要です。

test.cmd:

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4" %%i in ('dir /b *Example.txt') do (
  rem pad 2nd token with leading zero
  set _num=0%%j
  set _num=!_num:~-2!
  ren "%%i %%j %%k %%l" "%%i !_num! %%k %%l"
  )
endlocal

例:

> dir *Example.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 2 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
03/01/2019  11:30                 0 File 3 - Example.txt
03/01/2019  11:30                 0 File 4 - Example.txt
03/01/2019  11:30                 0 File 5 - Example.txt
               6 File(s)              0 bytes
               0 Dir(s)  1,075,134,230,528 bytes free

> ..\test

> dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:54    <DIR>          .
03/01/2019  11:54    <DIR>          ..
03/01/2019  11:30                 0 File 02 - Example.txt
03/01/2019  11:30                 0 File 03 - Example.txt
03/01/2019  11:30                 0 File 04 - Example.txt
03/01/2019  11:30                 0 File 05 - Example.txt
03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
               6 File(s)              0 bytes
               2 Dir(s)  1,075,134,230,528 bytes free

参考文献

13
DavidPostill

このPowerShellの1つのライナーは、ファイル名のすべての数字を2か所に展開します.PadLeft(2,'0')
(および数字をそのままにし、さらに多くの場所をそのままにします)

Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}

話題になるために、コマンドライン/バッチファイルにラップされます:

Powershell -Nop -C "Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}"

コマンドを実行する前に安全を確保するには、次のいずれかを追加します

  • -Confirm名前を変更する前に尋ねる
  • -WhatIfwhichはすべての名前を変更してリストしますwouldパラメータなしで実行します

最後の直前"

17
LotPings

編集:この質問は特に名前の変更に関するものであることに気づきましたコマンドラインから、それは質問に直接答えません...私はそれを他の人に役立つことを願って今のところそれを保ちます。


Total Commanderファイルマネージャーには、優れた一括名前変更ツールがあります。名前の変更のプレビュー、さまざまな名前の変更マスク、正規表現、フォルダー階層全体でのファイルの名前変更など、多くの機能が含まれています。同時に、それは非常に使いやすいです。

これは、その使用法を示すためのスクリーンショットです。

Total Commander Multi Rename Example

ステップバイステップ:

  1. ダウンロード そしてTotal Commanderを実行します。
  2. 名前を変更するファイルを含むフォルダーに移動します。
  3. 名前を変更するファイルにマークを付けます:
    • オプション1 - CtrlA フォルダ内のすべてのファイルをマークするため。
    • オプション2-を使用してファイルを1つずつマーク Space キーまたはマウスの右クリック。
    • オプション3-[ファイルの検索]を開きます(AltF7)、タイプ*.txt [検索]ボックスで、[検索の開始]をクリックし、[リストボックスにフィード]を押して、次のファイルにマークを付けます CtrlA。内部フォルダー内のファイルの名前も変更する場合は、この手法を使用します。
  4. 押す CtrlM マルチ名前変更ツールを開きます。
  5. 「検索」および「置換」ボックスに必要な値を設定します。正規表現を使用する場合は、RegExボックスをオンにします。
  6. 「開始!」を押します。
3
valiano