web-dev-qa-db-ja.com

ファイルの名前を一括変更する方法

私は99 - DescriptiveName.txtというパターンで名前が付けられたたくさんのファイルを持っています、そして先頭から番号を取り除きたいのでDescriptiveName.txtだけがあります。

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

124
BIBD

私はあなたのタイトルであなたが「ドスで」と言うのを知っています、しかし私はあなたがちょうどこれをする方法を探していて、それが最善の方法であるかどうか疑問に思っているという印象を得ます。

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

Bulk Rename Utility

これはコマンドラインツールではありませんが、本当にそのように使用したいのであれば、 コマンドラインバージョン があります。

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

おお、それは個人的な使用のためのFREEです。

93
Jim McKeeth

小さな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'に変えます。

-WhatIfRename-Itemパラメーターを使用して、名前を変更する前に名前を確認してください。

56
Joey

AntRenamer を使うと、名前の変更パターンを簡単に定義できます。たくさんのものがすでに用意されています(そしてそれはアクションのプレビューを与えます):

AntRenamer

個人的および商業的使用のために無料です。

24
Gnoupi

あなたが本当に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つの部分、#、「 - 」、および残りの名前に分けます。それらのそれぞれのためにそれはrenameコマンドをします。

24
zdan

古い学校:

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

次に、エディタを使って不要なものを取り出し、必要な部分を修正します。一番上の行に "@echo off"を追加し、保存して実行します。

19
WireGuy

別のオプション:Massive File Renamer

それは簡単に複数のファイルとファイル拡張子の名前変更を可能にします。とても速くて簡単です。

上級ユーザーや開発者のために、正規表現を使うことが可能です。

実際に見てください。

enter image description here

16
IvanRF

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

これは私がトータルコマンダーを推薦するために答えた3番目か4番目の質問です...私は彼らから手数料を得るべきです;-)

13
Yuval

私が満足しているツールは ReNamer です。私は何度も同じリネームをするので、それはまた私にとって有用であったリネーム規則の保存もサポートします。

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

enter image description here

11
Esko Luontola

私はこれを効果的にするために Free Commander Portable (フリーウェア)を使用しました。

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

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

RegexRenamer screenshot

長所:

  • とてもシンプルなUI。
  • 開発者が慣れ親しんでいる正規表現。
  • GPLv2;

Con's:

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

私は約1ヶ月前に RenPhoric を発見しました。見事。そしてそれはフリーです。

複雑なインターフェースはなく、私はすぐに私が望んだとおりに名前を変更することができました。正規表現対応それ以来他に何も使っていません。

3
Umber Ferrule

最も簡単な方法は、 マスター名の変更 を使用することです。

3
Kevin Panko

これがコマンドラインの解決策です---ファイル名の中の "パターン"を扱いやすくするために特に書いた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
Zach Scrivena

上記の@zdanと同様に、私はこれをコマンドラインで実行しました(Windowsでは "cmd.exe"を使用)。私の特定のケースには少し手間がかかりましたが、少しの調査で解決しました。

Zdanのように、私はリストをTXTファイルに出力し、それに応じてファイルの名前を変更するためにtokensdelimsを使いました。私の場合、私はsoのような名前のファイルのリストから始めました:

name-01-02-2012.csv

ファイルの日付部分はy/m/dの順序にして、末尾に "name"の部分を付けて、次のようになるようにします。

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つの区切り文字(ダッシュとドット)があることに注意してください。

私は個人的には "Bulk Rename"アプリを気にしません。他の人が述べたように、GUIは残酷で直感的ではありません。ちょっとした調査と簡単なコーディングで、これらのことは非常に効率的かつ迅速に行うことができます。

2
gtr1971

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

使用法

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
2
user212780

マルチリネームスクリプトはあなたがスクリプトを介して駆動することができます総司令官マルチリネームツールにオープンソースの代替手段です。メタデータ情報にTCプラグインを使用できます。

https://code.google.com/p/multi-rename-script/ http://multi-rename-script.googlecode.com/svn/trunk/docs/res/MRS.PNG

2
majkinetor
 @ echo off 
 setlocal enabledelayedexpansion 
 set X = 5 
 set FOLDER_PATH =。
 %%の場合は%FOLDER_PATH%
 f in(*)は、%% f neq%〜nx0(
 set "filename = %%〜nf" 
 set "filename =!filename:〜%X%!" 
 ren "%% f" "!filename!%%〜xf" 
)
 popd 
 

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

2
bbm123

Cylogの WildRename が好きそれは強力でありながら使いやすく、そして多くの機能を持っています。

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

enter image description here

2
Synetech

私はBlackboardを使って大学のコースを管理しています。課題をまとめてダウンロードするとき(Blackboardで、グレーディングの一番上の列をクリックしてから、「課題ファイルのダウンロード」を選択します)Blackboardはファイル名に余分なものを追加します。

これが彼らがどのように見えるかです:

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

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

studentname.docx

そこで私は@zdanと@ gtr1971が助言した方法を使い、その中にファイルが入っているフォルダ(CMD.EXE)でコマンドウィンドウを開いた。次に、このコマンドを実行してすべてのファイル名を文書に入れます。

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
Webmentorman

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

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

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

または

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

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

1
dbenham

これはファイルの名前を変更するために使用できるFile Attribute Changerと呼ばれる別の単純なプログラムです。これはポータブルプログラムなので、USBドライブに入れて持ち運ぶことができます。

http://www.softpedia.com/get/Desktop-Enhancements/Other-Desktop-Enhancements/File-Attribute-Changer.shtml

1
Brian

あなたが深刻な力を必要としていてお金を払い出す気があるのであれば... PowerGrep は市場で最も強力で用途の広いツールの1つです...あなたはPowerGrepでほとんど何でも名前を変更することができます...でもバイナリ検索と置換...それはRegEx Guruによって作成された、 Jan Goyvaerts

enter image description here

0
Eddie B