web-dev-qa-db-ja.com

cmdで複数のファイルの名前を変更する

ディレクトリに複数のファイルがあり、拡張子ではなくファイル名に何かを追加したい場合、どうすればよいですか?

テストファイルfile1.txtおよびfile2.txtを使用して、以下を試しました。

ren *.txt *1.1.txt

これにより、ファイルの名前がfile1.1.txtおよびfile2.txt1.1.txtに変更されます

ファイルをfile1 1.1.txtfile2 1.1.txtにしたい

これはcmdから可能ですか、これを行うためにbatファイルが必要ですか? PowerShellはどうですか?

25
Morne
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni 1.1%%~xi"

/fパラメータなしで単純なforループを使用すると、既に名前が変更されたファイルの名前が再び変更されます。

19
Endoro

最も長い名前の文字よりも?が多いことを確認してください。

ren *.txt "???????????????????????????? 1.1.txt"

詳細については、 Windows RENAMEコマンドがワイルドカードをどのように解釈するか を参照してください。

新しいソリューション-2014/12/01

正規表現が好きな人には、 JREN.BAT -XP forward。

jren "^.*(?=\.)" "$& 1.1" /fm "*.txt"

または

jren "^(.*)(\.txt)$" "$1 1.1$2" /i
20
dbenham

ステップ1:

すべてのファイルを選択(Ctrl + A)

ステップ2:

次に、名前変更オプションを選択します

enter image description here

ステップ3:

ファイル名を選択...例:myfile

自動的にmyfile(01)、myfile(02)、.....に名前を変更します

スペースとブラケットを置き換える場合は、続行ステップ4

ステップ4:

現在のフォルダーからWindows Powershellを開きます

enter image description here

ステップ5:

空のスペースをアンダースコア(_)に置き換える

 dir | rename-item -NewName {$_.name -replace [Regex]::Escape(" "),"_"}

ステップ6:

オープンブラケットの交換用

 dir | rename-item -NewName {$_.name -replace [Regex]::Escape("("),""}

クローズブラケットの交換用

 dir | rename-item -NewName {$_.name -replace [Regex]::Escape(")"),""}
15
Ranjith Kumar

以下のコマンドは仕事をするでしょう。

forfiles /M *.txt /C "cmd /c rename @file \"@fname 1.1.txt\""

ソース: ファイル拡張子の一括変更

10
Giri
@echo off
for %%f in (*.txt) do (
    ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
3
Eugene

これを試してください Bulk Rename Utility それはうまく機能します。たぶん車輪を再発明しないでください。スクリプトを必要としない場合、これは良い方法です。

2
Panama Jack

Endoroのコマンド(Endroに感謝)をコマンドプロンプトに直接貼り付けて、ファイルにプレフィックスを追加しようとしましたが、エラーが発生しました。解決策は、%%を%に減らすことでした。

for /f "delims=" %i in ('dir /b /a-d *.*') do ren "%~i" "Service.Enviro.%~ni%~xi"
1
MJA

これは特定のケースで機能します:

ren file?.txt "file? 1.1.txt" 
0
jfajunior

私もこれに戸惑いました...一括で名前を変更するときにWindowsが挿入する括弧が好きではありませんでした。私の研究では、代わりにPowerShellでスクリプトを書くことにしました。超簡単で、魅力のように働いた。今では、ファイル名の変更をバッチ処理する必要があるときにいつでも使用できます...これは頻繁に行われます。私は何百枚もの写真を撮り、カメラはそれらにIMG1234.JPGなどの名前を付けます...

これが私が書いたスクリプトです。

# filename: bulk_file_rename.ps1
# by: subcan
# PowerShell script to rename multiple files within a folder to a 
# name that increments without (#)
# create counter
$int = 1
# ask user for what they want
$regex = Read-Host "Regex for files you are looking for? ex. IMG*.JPG "
$file_name = Read-Host "What is new file name, without extension? ex. New Image "
$extension = Read-Host "What extension do you want? ex. .JPG "
# get a total count of the files that meet regex
$total = Get-ChildItem -Filter $regex | measure
# while loop to rename all files with new name
while ($int -le $total.Count)
{
    # diplay where in loop you are
    Write-Host "within while loop" $int  
    # create variable for concatinated new name - 
    # $int.ToString(000) ensures 3 digit number 001, 010, etc
    $new_name = $file_name + $int.ToString(000)+$extension
    # get the first occurance and rename
    Get-ChildItem -Filter $regex | select -First 1 | Rename-Item -NewName $new_name
    # display renamed file name
    Write-Host "Renamed to" $new_name
    # increment counter
    $int++
}

これが世界中の誰かに役立つことを願っています。

サブカン

0
subcan