it-swarm.com.de

Benennen Sie mehrere Dateien in cmd um

Wenn ich mehrere Dateien in einem Verzeichnis habe und etwas an ihren Dateinamen anhängen möchte, aber nicht an die Erweiterung, wie würde ich das tun?

Folgendes habe ich mit den Testdateien file1.txt und file2.txt ausprobiert:

ren *.txt *1.1.txt

Dadurch werden die Dateien in file1.1.txt und file2.txt1.1.txt umbenannt.

Ich möchte, dass die Dateien file1 1.1.txt und file2 1.1.txt sind.

Ist dies von cmd aus möglich oder muss ich dazu eine bat-Datei haben? Was ist mit PowerShell?

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

Wenn Sie die einfache for-Schleife ohne den /f-Parameter verwenden, werden bereits umbenannte Dateien erneut umbenannt.

16
Endoro

Stellen Sie sicher, dass es mehr ? gibt als Zeichen mit dem längsten Namen:

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

Siehe Wie interpretiert der Windows RENAME-Befehl Platzhalterzeichen? Für mehr Information.

Neue Lösung - 2014/12/01

Für diejenigen, die reguläre Ausdrücke mögen, gibt es JREN.BAT - ein hybrides JScript/batch-Befehlszeilenprogramm, das auf jeder Windows-Version ab XP ausgeführt wird.

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

oder

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

Schritt 1:

Alle Dateien auswählen (Strg + A)

Schritt 2 :

Wählen Sie dann die Option zum Umbenennen

 enter image description here

Schritt 3: 

Wählen Sie Ihren Dateinamen ... zum Beispiel: meineDatei

es wird automatisch in myfile (01), myfile (02) , .....umbenannt

Wenn Sie Leerzeichen und Klammern ersetzen möchten, fahren Sie mit Schritt 4 fort.

Schritt 4:

Öffnen Sie Windows PowerShell aus Ihrem aktuellen Ordner

 enter image description here

Schritt 5:

Zum Ersetzen von Leerzeichen in Unterstrich (_)

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

Schritt 6:

Zum Ersetzen der offenen Halterung

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

Schließen Sie die Halterung wieder

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

Der folgende Befehl würde den Job erledigen.

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

source: Dateierweiterungen umbenennen

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

Versuchen Sie es/ Bulk Rename Utility Es funktioniert gut. Vielleicht das Rad nicht neu erfinden. Wenn Sie kein Skript benötigen, ist dies ein guter Weg.

2
Panama Jack

Ich habe versucht, den Endoro-Befehl (Danke Endoro) direkt in die Eingabeaufforderung einzufügen, um den Dateien ein Präfix hinzuzufügen, aber ein Fehler ist aufgetreten. Lösung war %% auf% zu reduzieren, also:

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

Dies funktioniert für Ihren speziellen Fall: 

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

Ich war auch darüber verwirrt ... Ich mochte die Klammern nicht, die Windows einfügt, wenn Sie in Massen umbenennen. In meiner Recherche habe ich beschlossen, stattdessen ein Skript mit PowerShell zu schreiben. Super einfach und funktionierte wie ein Zauber. Jetzt kann ich es immer dann verwenden, wenn ich die Datei umbenennen muss, was häufig vorkommt. Ich mache hunderte von Fotos und die Kamera nennt sie IMG1234.JPG etc ...

Hier ist das Skript, das ich geschrieben habe:

# 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++
}

Ich hoffe, das hilft jemandem da draußen.

subcan

0
subcan