2009-11-04 00:22:52 +0000 2009-11-04 00:22:52 +0000
65
65
Advertisement

ファイルの名前を一括で小文字に変更する方法はありますか?

Advertisement

フォルダやサブフォルダ内のすべてのファイルの名前を小文字に変更する方法が必要です。

only windows (XP または 7) を使用してそれを行う方法があるかどうかを知りたいです。

Advertisement
Advertisement

回答 (13)

128
128
128
2012-04-14 13:25:17 +0000

ディレクトリに移動して、以下のコマンドを実行してください。

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のパラメータ) ディレクトリをリストアップしないでください。(aattributeを、-notを、ddirectoryを、rename "%f" "%f"dirを表す)
  • /l- ファイルの名前を自分の名前に変更しますが、これは実際には0x6&コマンドと0x6&の組み合わせによって小文字化されます。
18
18
18
2009-11-04 00:26:39 +0000

spacetornado Renamer は、大量のファイルを一括でリネームするWindowsプログラムです。テキストの検索と置換、一定数の文字の削除、大文字小文字の変更、大文字小文字の変更、全てのファイル名の先頭または末尾にテキストを追加(追加/前置)することができます

12
Advertisement
12
12
2015-02-24 18:33:51 +0000
Advertisement

Windows 7 からは PowerShell を使用することができます

Get-ChildItem "C:\path\to\folder" -recurse | 
  Where {-Not $_.PSIsContainer} | 
  Rename-Item -NewName {$_.FullName.ToLower()}
  • ルートフォルダの選択
  • ルートフォルダ内のすべての files とサブフォルダの名前が変更されます
  • フォルダ名は Where {-Not $_.PSIsContainer} | で除外されます
  • フォルダ名は 0x6& で除外されます
9
9
9
2016-07-21 22:07:04 +0000

ここでは、実際に動作するネイティブの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
6
Advertisement
6
6
2009-12-05 20:17:27 +0000
Advertisement

私の個人的なお気に入りのバッチファイルリネームユーティリティは、 Cylog’s WildRename です。他の多くの機能の中で、ファイル名の大文字小文字を変更することができます。WildRenameの一番の魅力は、おそらく正規表現をサポートしていることでしょう。

5
5
5
2016-05-06 15:53:33 +0000

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")

2番目のループ

/a-d

1番目のループで見つけた absolute paths内の全てのfile name(rename スイッチを外した場合はfiledirectory名)のリストを取得し、これらのファイルの名前を小文字に変換する。

  • 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つのループを必要とする。

3
Advertisement
3
3
2013-04-07 17:06:17 +0000
Advertisement

文字置換」戦略を使えばいいのですが…。

set Name=%Name:A=a%
set Name=%Name:B=b%
set Name=%Name:C=c%

…などのように、AからZまでの文字に対応しています。おそらく、FORループの形で実装することができるでしょう。

1
1
1
2011-03-03 00:33:58 +0000

Windowsでこれを行うための最良のプログラムは、Bulk Rename Utilityです。これは便利なツールです。正規表現を使ってファイルやフォルダの名前を変更することもできます。また、シェルとの統合(エクスプローラから右クリックで実行できる)も可能で、これは非常に良い。64ビット版と32ビット版があります。

1
Advertisement
1
1
2009-11-04 00:56:45 +0000
Advertisement

http://www.dostips.com/DtCodeCmdLib.php#Function.toLower は、バッチファイルにインクルードして呼び出すことができるシンプルな関数を提供しています。

バッチファイルにフォルダやファイル名を反復処理させ、この関数を呼び出して名前の小文字バージョンを生成させます。

1
1
1
2009-12-05 19:54:00 +0000

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&
1
1
1
2017-05-30 15:01:22 +0000

この質問に対する loftysnakeの回答 の受け入れられた回答は、カレント・ディレクトリに対しては動作しますが、サブフォルダは検索されません。 &nbsp 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だけと言っても良いでしょう。

0
0
0
2014-11-06 00:08:21 +0000

再帰的な解決策。これを 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
0
0
2016-03-30 10:50:39 +0000

パワーシェル

ディレクトリに移動して実行してみます。

dir | Rename-Item -NewName { $_.Name.ToLowerInvariant() }

これで動作することを確認しました。ここにありました。 http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx

Advertisement

関連する質問

3
19
10
28
9
Advertisement
Advertisement