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


13

元のファイル

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ツールを使用して一括で名前を変更することはできますか?


1
このタイプのタスクを簡単にする素敵な無料ユーティリティ... bulkrenameutility.co.uk/Main_Intro.php
モアブ

同意する。このためのGUIベースのソリューションをたくさん挙げることができ、なぜCLIに
こだわるの

@Mawg、これらのGUIツールを使用してスクリプトを作成できますか?
サブリナ

私はできました-AutoItを使用します-おそらくそれに対してお勧めします:-) CLIに厳しい要件があるかどうか疑問に思いましたが、今はあるようです。明確化してくれてありがとう
Mawgはモニカを

回答:


13

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

参考文献


17

このPowerShellの1つのライナーは二つの場所に、ファイル名のすべての数字を拡大していきます.PadLeft(2,'0')
(そしてより多くの場所手つかずで数字を残します)

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

cmd line / batchファイルにラップされたトピックになります:

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

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

  • -Confirm 名前を変更する前に尋ねる
  • -WhatIfそれはすべてのリネーム一覧表示されますでしょうパラメータなしで実行します

最後の直前 "


3

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


総司令官のファイルマネージャは、優れたバルクリネームツールを持っています。名前変更プレビュー、さまざまな名前変更マスク、正規表現、フォルダー階層全体のファイル名の変更など、多くの機能が含まれています。同時に、非常に使いやすいです。

その使用方法を示すスクリーンショットは次のとおりです。

総司令官のマルチリネームの例

ステップバイステップ:

  1. Total Commanderをダウンロードして実行します。
  2. 名前を変更するファイルがあるフォルダーに移動します。
  3. 名前を変更するファイルをマークします。
    • オプション1- Ctrl+ Aフォルダー内のすべてのファイルをマークします。
    • オプション2- Spaceキーまたはマウスの右クリックを使用して、ファイルを1つずつマークします。
    • オプション3-[ファイルの検索](Alt+ F7)を開き*.txt、[検索]ボックスに入力し、[検索の開始]をクリックし、[リストボックスにフィード]を押して、ファイルをCtrl+でマークしますA。内部フォルダーのファイルの名前も変更する場合は、この手法を使用します。
  4. Ctrl+ Mを押して、Multi-Renameツールを開きます。
  5. [検索対象]および[置換]ボックスに目的の値を設定します。正規表現を使用する場合は、[正規表現]ボックスをオンにします。
  6. 「開始!」を押します。

-2

ren *.bat *.txt一致するすべてのファイルの拡張子の名前を変更して、名前の他の部分を保持します。これを悪用して一連のrenコマンドを実行することはできませんか?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (以下のようなぶら下がり余りを扱う File 022 - Example.txt

1
これは役に立たない、あなたのコマンドが何をするかをチェックしましたか?2-> 0、22-> 02、15-> 05。
LotPings

いいえ、私はWindows OSを持っていないので、試しませんでした。しかし、RENがこれを実行できることを何年も思い出しました。とにかく提案をするつもりでした。
ダグラス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.