フォルダやサブフォルダ内のすべてのファイルの名前を小文字に変更する方法が必要です
windows(XPか7)だけでやる方法があれば教えてほしいです
68 ino 2009-11-04
ディレクトリに移動し、以下のコマンドを実行します
for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")
ここでは、誰かが修正/改善したい場合のブレークダウンです
for /f
– 行ごとに"Tokens=*"
– 各行の各項目を処理します%f in (...)
–%f
は各項目の変数名ですdir
– ディレクトリ内のすべてのファイルとサブディレクトリをリストアップします/l
– (dirのパラメータ) 小文字を使用します/b
– (dirのパラメータ)裸のフォーマットを使用し、ファイル/ディレクトリ名のみ、サイズなし、ヘッダなし/a-d
– (dirのパラメータ) ディレクトリをリストアップしない。(a
はattribute
を、-
はnot
を、d
はdirectory
を表します)rename "%f" "%f"
– ファイル名を自分の名前でリネームしますが、これは実際にはdir
コマンドと/l
の組み合わせで小文字化されます
133 loftysnake 2012-04-14
spacetornado Renamerは、大量のファイルを一括でリネームするWindowsプログラムです。テキストの検索と置換、一定数の文字の削除、大文字小文字の変更、大文字小文字の変更、すべてのファイル名の先頭または末尾にテキストを追加(追記/前置)することができます
19 joe 2009-11-04
Windows 7 以降では、PowerShell をこれらのタスクに使用することができます
Get-ChildItem "C:\path\to\folder" -recurse |
Where {-Not $_.PSIsContainer} |
Rename-Item -NewName {$_.FullName.ToLower()}
– ルートフォルダを選択してください – ルートフォルダ内のすべてのファイルとサブフォルダの名前が変更されます – フォルダ名は Where {-Not $_.PSIsContainer} |
で除外されます
15 nixda 2015-02-24
ここに、実際に動作するネイティブの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を使えば、再帰的な解法も同じように簡単です
jren "^" "" /s /l
10 dbenham 2016-07-21
私の個人的なお気に入りのバッチファイルリネームユーティリティは、Cylog’s WildRenameです。他の多くの機能の中で、ファイル名の大文字小文字を変更することができます。WildRename の最大の特徴は、おそらく正規表現をサポートしていることでしょう
6 Synetech 2009-12-05
“再帰的 “バージョンの受け入れられた答え(それは機能します*)
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"')
カレントディレクトリ内のすべてのディレクトリの絶対パスのリストを取得します(カレントディレクトリを含む)
C:\Foo>
C:\Foo\TO.txt
C:\Foo\Bar\LOWER.txt
C:\Foo\Bar\Baz\CASE.txt
第二のループ
for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")
最初のループで見つかったそれぞれの絶対パス内のすべてのファイル名 (/a-d
スイッチを外した場合はファイル名とディレクトリ名) のリストを取得し、これらのファイル名を小文字に変換します
C:\Foo\TO.txt
C:\Foo\Bar\LOWER.txt
C:\Foo\Bar\Baz\CASE.txt
rename
の第2引数にはファイル名を指定しなければならず、絶対パスではないため(/s
スイッチで取得したパスのように)、2つのループが必要になります
6 wc.matteo 2016-05-06
キャラ入れ替え」の戦略を使えばいいのに
set Name=%Name:A=a%
set Name=%Name:B=b%
set Name=%Name:C=c%
…などのように、AからZまでの文字に対して。おそらく FOR ループの形で実装することができるでしょう
3 DednDave 2013-04-07
http://www.dostips.com/DtCodeCmdLib.php#Function.toLowerは、バッチファイルにインクルードして呼び出すことができるシンプルな関数を提供しています
そこで、バッチファイルでフォルダやファイル名を繰り返し処理し、この関数を呼び出して名前の小文字バージョンを生成します
1 Kevin Haines 2009-11-04
http://windowsitpro.com/articles/index.cfm?articleid=81612より
標準コマンドだけを使って、LwrCase.batとLwrCase_Folder.batをスクリプト化して、ファイル名を小文字に変更したり、フォルダ内のすべてのファイル名を小文字に変更したりしています
ファイル名を小文字に変更するには、以下のようにします
[call] LwrCase FullyQualifiedFileName
FullyQualifiedFileName は、名前を変更する完全修飾ファイル名です
ディレクトリ内のすべてのファイル名を変更するには、次のようにします
[call] LwrCase_Folder FullyQualifiedDirectoryName [/S]
ここで、FullyQualifiedDirectoryName は完全に修飾されたフォルダのパスで、/S はオプションのパラメータで、すべてのサブフォルダ内のファイル名もリネームします
注: LwrCase.bat は DIR コマンドの /L スイッチを使用しています
LwrCase.bat contains:
@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 contains:
@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
1 Even Mien 2009-12-05
Windowsでこれを行うための最良のプログラムは、Bulk Rename Utilityです。これは便利なツールです。ファイルやフォルダの名前を変更するために正規表現を使用することもできます。また、シェルとの統合(右クリックでエクスプローラから実行できるようにする)も可能で、これは非常に素晴らしいです。64 ビット版と 32 ビット版があります
1 ubiquibacon 2011-03-03
Powershell
ディレクトリに移動して実行します
dir | Rename-Item -NewName { $_.Name.ToLowerInvariant() }
これがうまくいくことを検証してみました。ここで発見しました。http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx
1 JP Hellemons 2016-03-30
この質問に対するloftysnakeの回答は、カレントディレクトリに対しては動作しますが、サブフォルダは検索しません。Sawny は、loftysnake の回答を再帰的にするための簡単な修正を提案しましたが、うまくいきません。ヘルプ(/?
)のメッセージを引用すると
… 保存先ファイルの新しいドライブやパスを指定することはできません
しかし、move
はrename
では動作しないので、このコマンドを使って再帰的にファイル名を小文字に変更することができます
for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (move /y "%f" "%f")
なぜなら、Move
がディレクトリパスに対応できることが判明したからです
上記のコマンドは、コマンドプロンプト(CMD.EXE
)に直接入力した場合に動作します。バッチ(.BAT
)ファイル内から行う場合は、%
文字を2倍にする必要があります
for /f "Tokens=*" %%f in ('dir /l/b/a-d/s') do (move /y "%%f" "%%f")
そして、おそらくカッコと/y
は省いてdo move …
だけと言ってもいいでしょう
1 Adrian 2017-05-30
再帰的な解決策。これを recursiverename.cmd ファイルに入れます
for /f "Tokens=*" %%f in ('dir /l/b/a-d') do (rename "%%f" "%%f")
for /r /d %%x in (*) do (
pushd "%%x"
for /f "Tokens=*" %%f in ('dir /l/b/a-d') do (rename "%%f" "%%f")
popd
)
0 Mick 2014-11-06