ファイルの名前を一括で小文字に変更する方法はありますか?
フォルダやサブフォルダ内のすべてのファイルの名前を小文字に変更する方法が必要です。
only windows (XP または 7) を使用してそれを行う方法があるかどうかを知りたいです。
フォルダやサブフォルダ内のすべてのファイルの名前を小文字に変更する方法が必要です。
only windows (XP または 7) を使用してそれを行う方法があるかどうかを知りたいです。
ディレクトリに移動して、以下のコマンドを実行してください。
for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")
誰かが修正・改良したい場合に備えて、以下のようにブレークダウンします :
for /f
- 各行について "Tokens=*"
- 各行の各項目を処理します。%f in (...)
- %f
は各項目の変数名です。dir
- ディレクトリ内の全てのファイルとサブディレクトリをリストアップします。/l
- (ディレクトリのパラメータ) は小文字を使用します。/b
- (dir用パラメータ) ベアフォーマットを使用し、ファイル/ディレクトリ名のみ、サイズなし、ヘッダなし。/a-d
- (dirのパラメータ) ディレクトリをリストアップしないでください。(a
はattribute
を、-
はnot
を、d
はdirectory
を、rename "%f" "%f"
はdir
を表す)。/l
- ファイルの名前を自分の名前に変更しますが、これは実際には0x6&コマンドと0x6&の組み合わせによって小文字化されます。spacetornado Renamer は、大量のファイルを一括でリネームするWindowsプログラムです。テキストの検索と置換、一定数の文字の削除、大文字小文字の変更、大文字小文字の変更、全てのファイル名の先頭または末尾にテキストを追加(追加/前置)することができます
Windows 7 からは PowerShell を使用することができます
Get-ChildItem "C:\path\to\folder" -recurse |
Where {-Not $_.PSIsContainer} |
Rename-Item -NewName {$_.FullName.ToLower()}
Where {-Not $_.PSIsContainer} |
で除外されます ここでは、実際に動作するネイティブのcmd.exeコマンドのみを使用した適切な再帰的コマンドラインソリューションがあります。これは可能な限り最もシンプルなネイティブソリューションだと思います。
for /r %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"
もしあなたがネイティブcmd.exeコマンドを超えたいのであれば、もう一つの選択肢として、名前を大文字または小文字に変換するオプションをサポートしている私の JREN.BAT正規表現リネームユーティリティ があります。これは純粋なスクリプト(ハイブリッドJScript/バッチ)で、XP以降のWindowsマシン上でネイティブに動作し、サードパーティ製のexeファイルは必要ありません。完全なドキュメントが組み込まれています - コマンドラインから jren /?
でアクセスできます。
JRENでは、再帰的なソリューションは以下のように簡単です。
jren "^" "" /s /l
私の個人的なお気に入りのバッチファイルリネームユーティリティは、 Cylog’s WildRename です。他の多くの機能の中で、ファイル名の大文字小文字を変更することができます。WildRenameの一番の魅力は、おそらく正規表現をサポートしていることでしょう。
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))
for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')
現在の(それを含む)内部の全てのディレクトリの absolute paths のリストを取得する:
C:\Foo>>
C:\Foo \TO.txt
C:\Foo \TO.txt
C:\Foo \TO.txt txt
C:\Foo\Bar \LOWER. txt
C:\Foo\BarBaz ♦♦\CASE. txt
for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")
/a-d
1番目のループで見つけた absolute paths内の全てのfile name(rename
スイッチを外した場合はfileとdirectory名)のリストを取得し、これらのファイルの名前を小文字に変換する。
C:\Foo*TO.txt*
C:\FooBar*LOWER.txt*
C:\FooBar\Baz CASE.txt
C:Illustrator.txt**
C:Illustrator.txt** 1. txt**
♦ * * *
♦ * * /s
への第2引数は、(0x6&スイッチで得られたもののように)絶対パスではなく、_ファイル名でなければならないので、それは2つのループを必要とする。
Windowsでこれを行うための最良のプログラムは、Bulk Rename Utilityです。これは便利なツールです。正規表現を使ってファイルやフォルダの名前を変更することもできます。また、シェルとの統合(エクスプローラから右クリックで実行できる)も可能で、これは非常に良い。64ビット版と32ビット版があります。
http://www.dostips.com/DtCodeCmdLib.php#Function.toLower は、バッチファイルにインクルードして呼び出すことができるシンプルな関数を提供しています。
バッチファイルにフォルダやファイル名を反復処理させ、この関数を呼び出して名前の小文字バージョンを生成させます。
From http://windowsitpro.com/articles/index.cfm?articleid=81612 .
標準コマンドだけを使って、LwrCase.batとLwrCase_Folder.batをスクリプト化して、ファイル名を小文字に変更したり、フォルダ内の全てのファイル名を小文字に変更したりしています。
ファイル名を小文字に変更するには、次のようにしてください:
[call] LwrCase FullyQualifiedFileName
ここで、FullyQualifiedFileName は、名前を変更する完全修飾ファイル名です。
ディレクトリ内のすべてのファイル名をリネームするには、次のように使用します:
[call] LwrCase_Folder FullyQualifiedDirectoryName [/S]
ここで、FullyQualifiedDirectoryName は完全修飾されたフォルダパス、/S はオプションのパラメータで、すべてのサブフォルダ内のファイル名もリネームされます。
NOTE: LwrCase.bat は DIR コマンドの /L スイッチを使用しています。
LwrCase.bat には以下が含まれています。
@echo off
if {%1}=={} @echo Syntax: LwrCase FullyQualifiedFileName&goto :EOF
if not exist %1 @echo LwrCase - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
set file=%%a
)
if /i "%file:~0,1%" EQU "d" @echo LwrCase - %1 is NOT a file.&endlocal&goto :EOF
for /f "Tokens=*" %%f in ('dir %1 /L /b /a /a-d') do (
Rename %1 "%%f"
)
endlocal
LwrCase_Folder.bat が含まれています。
@echo off
if {%1}=={} @echo Syntax: LwrCase_Folder FullyQualifiedDirectoryName&goto :EOF
if not exist %1 @echo LwrCase_Folder - %1 NOT found.&goto :EOF
setlocal
for /f "Tokens=*" %%a in ('@echo %~a1') do (
set folder=%%a
)
if /i "%folder:~0,1%" NEQ "d" @echo LwrCase_Folder - %1 is NOT a folder.&endlocal&goto :EOF
pushd %1
set sw=/B /A /A-D
if /i {%2}=={/S} set sw=%sw% %2
for /f "Tokens=*" %%f in ('dir %sw%') do (
call LwrCase "%%f"
)
popd
endlocal
``` 0x1&
この質問に対する loftysnakeの回答 の受け入れられた回答は、カレント・ディレクトリに対しては動作しますが、サブフォルダは検索されません。   Sawny は loftysnake の回答に簡単な修正を加えて再帰的にする を提案しましたが、これはうまくいきませんでした。
しかし、rename
は/?
が指定しないところで動作するので、このコマンドでファイル名を再帰的に小文字に変更することができます。
for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (move /y "%f" "%f")
move
はディレクトリパスに対応できることが判明したため、次のコマンドで再帰的にファイル名を小文字に変更することができます。
上記のコマンドはコマンドプロンプト(rename
)に直接入力した場合に動作します。
for /f "Tokens=*" %%f in ('dir /l/b/a-d/s') do (move /y "%%f" "%%f")
そして、括弧とMove
を省略してCMD.EXE
だけと言っても良いでしょう。
パワーシェル
ディレクトリに移動して実行してみます。
dir | Rename-Item -NewName { $_.Name.ToLowerInvariant() }
これで動作することを確認しました。ここにありました。 http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx