windows – ファイルの名前を小文字にバッチリネームする方法はありますか?

batch-rename file-management rename windows

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

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のパラメータ) ディレクトリをリストアップしない。(aattributeを、-notを、ddirectoryを表します)
  • rename "%f" "%f"– ファイル名を自分の名前でリネームしますが、これは実際にはdirコマンドと/lの組み合わせで小文字化されます

133  loftysnake  2012-04-14


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

enter image description here

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 の回答を再帰的にするための簡単な修正を提案しましたが、うまくいきません。ヘルプ(/?)のメッセージを引用すると

… 保存先ファイルの新しいドライブやパスを指定することはできません

しかし、moverenameでは動作しないので、このコマンドを使って再帰的にファイル名を小文字に変更することができます

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


タイトルとURLをコピーしました