ファイルの名前を一括変更するにはどうすればよいですか?


126

パターンで命名されたファイルの束を持っています99 - DescriptiveName.txt、そして、私はちょうど持っているので、正面から数を取り除きたいDescriptiveName.txtです。

これどうやってするの?コマンドラインから実行できますか、またはこれを実行できるユーティリティはありますか?

回答:


94

あなたのタイトルでは「in dos」と言っていますが、これを行う方法を探しているだけで、それが最善の方法かどうか疑問に思っています。

私がこれについて見つけた絶対的な最高のツールは、一括名前変更ユーティリティです。

一括名前変更ユーティリティ

これはコマンドラインツールではありませんが、実際にそのように使用する場合はコマンドラインバージョンがあります。

私はGUIバージョンを多く使用しましたが、非常に強力で、非常に高速で、非常に使いやすいです。

ああ、個人使用は無料です。


残念ながら、このツールは商用利用には無料ではありません。(
AntonK

だから私は個人的には無料だと言った。
ジムマッキース

2
これは非常に高速なツールです。いくつかの検索と置換のロジックを使用して、6.000ファイルの問題を数秒で解決しました。Notepad ++を使用するようなものですが、何千ものファイルを編集します。素晴らしい解決策、ありがとう!
ピーナッツ

59

小さなPowerShellスクリプト:

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

より複雑な正規表現と組み合わせると、次のようになります。

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

これにより、'01-Beginning.mp3 'が' Beginning-01.mp3 'に変わります。

-WhatIfパラメータon Rename-Itemを使用して、名前を変更してから発行します。


1
@sysrqb、もう少し研究してください。
ジョーイ

replaceは2つの文字列式を必要としませんか?2つ目は2つありますが、1つ目はありません。 ... -replace '\d+ - ',''。また、最初のものは正規表現を使用して最初から単純に削除する方が良いと考えています。式の先頭に^アンカーを含める必要があると思うので、数字で始まる名前にのみ一致します。
Xalorous

1
@Xalorous:まあ、単純に試してみることができます。-replace右側に引数を1つだけ持つことができます。その場合、2番目の引数は暗黙的に空の文字列になります。
ジョーイ

これは私を救った.. Bulk Rename Utilityがクラッシュするだけで、他の多くの解決策を試しました。これは正規表現に慣れている人にとっては良い方法です。どうもありがとうございます !!
インクステソウ

24

Windowsのコマンドラインを本当に使用したい場合(何かをダウンロードしたくない場合)、次のようにできます。

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

最初の行は、ファイルのリストをfileList.txtというファイルに出力します。2行目は、リスト内の各名前を3つの部分、#、「-」、および残りの名前に分けます。これらのそれぞれに対して、名前変更コマンドを実行します。


2
最初の行を削除して簡単にしますfor /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l

私はこれが古いことを知っていますが、それは確かな答えです-%l(%L)のみが%k(%K)でなければなりません
ドナルドバード

24

AntRenamerを使用すると、名前変更のパターンを非常に簡単に定義できます。すでに準備されたものがたくさんあります(そしてアクションのプレビューを提供します):

AntRenamer

個人および商用での使用は無料です。


19

古い学校:

DIR * .TXT> TEMP.BATのように、DIRを実行し、出力をファイルにリダイレクトできます。

次に、エディターを使用して、不要なものを取り出し、必要な部分を変更します。「@echo off」を最上行として追加し、保存して実行します。


このページのリファレンスは、これで昔の博士号から得ました:dostips.com/DosCommandIndex.htm ; (良い?)古いDOSでできることは驚くべきことです!
ニック

16

別のオプション: Massive File Renamer

複数のファイルとファイル拡張子の名前を簡単に変更できます。非常に高速でシンプルです!

上級ユーザーおよび開発者の場合、正規表現を使用できます

実際にご覧ください:

ここに画像の説明を入力してください


1
ところで、サブフォルダ内のすべてのファイルを開くためにどのように選択できますか?約50のサブフォルダー(再帰的に)とその中に複数のファイルがあるルートフォルダーを持っています。
Pacerier

1
@Pacerier Javaファイルチューザーはそれを許可しないと思います。フォルダーの選択を許可し、再帰的な検索を含めることができるという考えがありました。これに注意し、将来のリリースで追加します!
IvanRF

13

私が使用して総司令官、このようなことのためのマルチリネームツール(CTRL + M)を。数え切れないほど多くある便利なツールは使いやすく、必要に応じて正規表現とテンプレートを使用することもできます。ああ、それは明らかに、変更を行う前にプレビューを提供します。

これは、私がTotal Commanderを推薦することに答えた3番目または4番目の質問です。


11

私が満足しているツールはReNamerです。また、名前の変更ルールの保存もサポートしています。これは、同じ名前の変更を何度も行うため、私にとっては便利でした。

以下は、最初のダッシュの前にテキストを削除する方法の例ですが、定義できる他のルールがたくさんあります。

ここに画像の説明を入力してください


5

このために、Free Commander Portable(フリーウェア)を使用しました。

  1. 名前を変更するファイルまたはディレクトリを選択またはナビゲートします
  2. [Ctrl-M]を押します(または[ファイル]> [複数の名前を変更])
  3. あなたの状況に合ったフィールドに記入してください
  4. プレビューが期待するものを示していることを確認する
  5. 行け!

4

上級ユーザーと開発者には、RegexRenamerをお勧めします

RegexRenamerスクリーンショット

プロの:

  • 非常にシンプルなUI。
  • 開発者が使い慣れている正規表現。
  • GPLv2;

短所:

  • コマンドラインではありません!:)

選択したフォルダーのすべてのサブフォルダーに対して再帰的に機能させることができませんでした!
ラッキールック


3

ここだコマンドラインソリューション---私はそれが簡単にファイル名に「パターン」で動作するようにするために、具体的に書いたJavaプログラムが。それは無料でオープンソースなので、自由に変更してください。

RenameWand
http://renamewand.sourceforge.net/

関連する使用例:

"-"ファイル名の前のすべてをドロップします。

java -jar RenameWand.jar  "<a> - <b>"  "<b>"

3桁の数字をファイル名の先頭に追加し、最終変更時刻でソートします。

java -jar RenameWand.jar  "<a>"  "<3|#FT> <a>"

ファイル名の一部を再配置し、大文字と小文字を変更します。

java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"

3

約1か月前にRenPhoricを発見しました。素晴らしいです。そしてそれは無料です。

複雑なインターフェイスはなく、私はすぐに希望どおりに名前を変更できました。正規表現が可能です。それ以降は何も使用していません。


2

CylogのWildRenameが好きです。強力でありながら使いやすく、多くの機能があります。

  1. 速い
  2. 文字列操作
  3. カウンター
  4. ワイルドカード
  5. 正規表現
  6. 代用
  7. 大文字小文字変換
  8. ロギング
  9. シミュレーション(実際に適用せずに結果を表示)

ここに画像の説明を入力してください


2

上記の@zdanのように、コマンドラインでこれを行いました(Windowsでは「cmd.exe」を使用)。私の特定のケースには多少の工夫が必要でしたが、少しの研究で解決しました。

zdanと同様に、リストをTXTファイルに出力し、それを使用tokensdelimsて、それに応じてファイルの名前を変更します。私の場合、次のような名前のファイルのリストから始めました。

name-01-02-2012.csv

ファイルの日付部分をy / m / dの順序にし、「名前」の部分を最後に付けて、次のようにします。

2012-01-02-name.csv

この一括処理を行うために、次のコードを使用しました。この方法で行う場合、拡張子「.csv」を含むファイル名のすべての部分が考慮されることに注意してください。それは私が最初に私を馬鹿にした。

dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m

ザ・はtokensインクルードは、ファイル名の「部」ですdelimsセパレータです。私の場合、2つの区切り文字(ダッシュとドット)がありました。

私は個人的に「一括名前変更」アプリを気にしません。他の人が述べたように、GUIは凶暴であり、あまり直感的ではありません。少しの調査と簡単なコーディングで、これらのことを効率的かつ迅速に行うことができます。


2

面白い名前とコマンドラインツールは非常に強力で、非常に高速で、非常に使いやすいです。「テキストの検索と置換」FART http://fart-it.sourceforge.net/ WORKS GREAT!txtファイル内の単語の名前も変更できます。

使用法

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --word          Match whole word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
    --cvs           Skip cvs dirs; execute "cvs edit" before changing files
 -a --adapt         Adapt the case of replace_string to found string
 -b --backup        Make a backup of each changed file
 -p --preview       Do not change the files but print the changes

さらなる詳細は?それがないファイル名を変更しますか
フォンブランド

はい、-fリストにあるオプション。
user1016274


2
@エコーオフ
setlocal enabledelayedexpansion
X = 5を設定
FOLDER_PATH =を設定します。
%FOLDER_PATH%をプッシュしました
(*)in %% f for do %% f neq%〜nx0(
    「ファイル名= %%〜nf」を設定
    set "filename =!filename:〜%X%!"
    ren "%% f" "!filename!%%〜xf"
)
ポップ

これをバッチファイルに保存して実行します


これは良いことですが、どうすればXを変数(パラメーターとして渡す)にできますか?
カンカン

@Kangkanは次のようになりますset /p "X=Enter the value for X: "
。– Kidquick

1

Blackboardを使用して、大学のコースを管理しています。課題をまとめてダウンロードする場合(Blackboardでグレーディング列の上部をクリックし、「課題ファイルのダウンロード」Blackboardはファイル名に余分なものを追加します。多くの場合、ファイル名が長すぎてWindowsで有効になりません。

それらは次のようになります。

Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx

そして、これは私が欲しかったものです

studentname.docx

そこで、ファイル(CMD.EXE)を含むフォルダーでコマンドウィンドウを開くことにより、@ zdanと@ gtr1971が推奨するアプローチを使用しました。次に、このコマンドを実行して、すべてのファイル名をドキュメントに入れます。

dir /b >filelist.txt

ドキュメントを編集し、フォルダー名などを削除します。

このコマンドを使用して、Blackboardが追加したファイル名をユーザー名とファイル拡張子のみで置き換えます。

for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n

これが他の誰かにも役立つことを願っています。



1

私は、JREN.BATというハイブリッドJScript /バッチコマンドラインユーティリティを開発しました。このユーティリティは、正規表現検索を実行して名前を置換することにより、ファイルまたはフォルダーの名前を変更できます。XP以降のWindowsマシンでネイティブに実行される純粋なスクリプトです。完全なドキュメントがスクリプト内に埋め込まれています。

JREN.BATが現在のディレクトリにあるか、パス内のどこかにあると仮定すると、名前変更タスクは簡単になります。

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

または

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

/Sサブディレクトリで名前の変更を再帰的に実行するオプションなど、多くのオプションがあります。


0

あなたが深刻な力を必要とし、お金を払うことをいとわないなら... PowerGrepは市場で最も強力で多目的なツールの1つです... PowerGrepでほとんど何でも名前を変えることができます...バイナリ検索と置換さえ... RegEx Guru、Jan Goyvaertsが作成しました

ここに画像の説明を入力してください


このユーティリティは...めちゃくちゃ高価です
Wizard79

あなたはそれを無期限に無料で使用することができます...しかし、その価値があります...私はいつもそれを使用しています。
エディB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.