回答:
あなたのタイトルでは「in dos」と言っていますが、これを行う方法を探しているだけで、それが最善の方法かどうか疑問に思っています。
私がこれについて見つけた絶対的な最高のツールは、一括名前変更ユーティリティです。
これはコマンドラインツールではありませんが、実際にそのように使用する場合はコマンドラインバージョンがあります。
私はGUIバージョンを多く使用しましたが、非常に強力で、非常に高速で、非常に使いやすいです。
ああ、個人使用は無料です。
小さな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
を使用して、名前を変更してから発行します。
... -replace '\d+ - ',''
。また、最初のものは正規表現を使用して最初から単純に削除する方が良いと考えています。式の先頭に^アンカーを含める必要があると思うので、数字で始まる名前にのみ一致します。
-replace
右側に引数を1つだけ持つことができます。その場合、2番目の引数は暗黙的に空の文字列になります。
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つの部分、#、「-」、および残りの名前に分けます。これらのそれぞれに対して、名前変更コマンドを実行します。
AntRenamerを使用すると、名前変更のパターンを非常に簡単に定義できます。すでに準備されたものがたくさんあります(そしてアクションのプレビューを提供します):
個人および商用での使用は無料です。
古い学校:
DIR * .TXT> TEMP.BATのように、DIRを実行し、出力をファイルにリダイレクトできます。
次に、エディターを使用して、不要なものを取り出し、必要な部分を変更します。「@echo off」を最上行として追加し、保存して実行します。
別のオプション: Massive File Renamer
複数のファイルとファイル拡張子の名前を簡単に変更できます。非常に高速でシンプルです!
上級ユーザーおよび開発者の場合、正規表現を使用できます。
実際にご覧ください:
私が満足しているツールはReNamerです。また、名前の変更ルールの保存もサポートしています。これは、同じ名前の変更を何度も行うため、私にとっては便利でした。
以下は、最初のダッシュの前にテキストを削除する方法の例ですが、定義できる他のルールがたくさんあります。
このために、Free Commander Portable(フリーウェア)を使用しました。
最も簡単な方法は、Rename Masterを使用することです。
ここだコマンドラインソリューション---私はそれが簡単にファイル名に「パターン」で動作するようにするために、具体的に書いた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>"
CylogのWildRenameが好きです。強力でありながら使いやすく、多くの機能があります。
上記の@zdanのように、コマンドラインでこれを行いました(Windowsでは「cmd.exe」を使用)。私の特定のケースには多少の工夫が必要でしたが、少しの研究で解決しました。
zdanと同様に、リストをTXTファイルに出力し、それを使用tokens
しdelims
て、それに応じてファイルの名前を変更します。私の場合、次のような名前のファイルのリストから始めました。
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は凶暴であり、あまり直感的ではありません。少しの調査と簡単なコーディングで、これらのことを効率的かつ迅速に行うことができます。
面白い名前とコマンドラインツールは非常に強力で、非常に高速で、非常に使いやすいです。「テキストの検索と置換」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
リストにあるオプション。
マルチ名前変更スクリプトは、スクリプトを介して操作できるTotal Commanders Multi Renameツールのオープンソースの代替手段です。メタデータ情報にTCプラグインを使用できます。
@エコーオフ setlocal enabledelayedexpansion X = 5を設定 FOLDER_PATH =を設定します。 %FOLDER_PATH%をプッシュしました (*)in %% f for do %% f neq%〜nx0( 「ファイル名= %%〜nf」を設定 set "filename =!filename:〜%X%!" ren "%% f" "!filename!%%〜xf" ) ポップ
これをバッチファイルに保存して実行します
set /p "X=Enter the value for X: "
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
これが他の誰かにも役立つことを願っています。
次に、ファイルの名前を変更するために使用できるFile Attribute Changerという別の簡単なプログラムを示します。ポータブルプログラムなので、USBドライブで持ち運ぶことができます。
私は、JREN.BATというハイブリッドJScript /バッチコマンドラインユーティリティを開発しました。このユーティリティは、正規表現検索を実行して名前を置換することにより、ファイルまたはフォルダーの名前を変更できます。XP以降のWindowsマシンでネイティブに実行される純粋なスクリプトです。完全なドキュメントがスクリプト内に埋め込まれています。
JREN.BATが現在のディレクトリにあるか、パス内のどこかにあると仮定すると、名前変更タスクは簡単になります。
jren "^\d+[ -]+(.+)\.txt$" "$1" /i
または
jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"
/S
サブディレクトリで名前の変更を再帰的に実行するオプションなど、多くのオプションがあります。