2013-06-24 4 views
17

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

ich folgendes versucht haben, mit Testdateien file1.txt und file2.txt:

ren *.txt *1.1.txt 

Diese benennt die Dateien auf file1.1.txt und file2.txt1.1.txt

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

Will sein das ist möglich von cmd oder muss ich eine bat-datei dafür haben? Was ist mit PowerShell?

+0

gibt es eine Menge von Dateien? –

+0

Theres etwa 90 in einem Ordner – Morne

+1

Sie können dies auch nur mit der Benutzeroberfläche tun, wenn Sie möchten. Wählen Sie alle Dateien aus, benennen Sie sie in "Datei" um und sie wird als Datei (1), Datei (2), Datei (3), Datei (4) usw. angezeigt. – Gray

Antwort

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

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

+1

was" ~ n "in" %% ~ ni 1.1 %% ~ xi "steht für? Ich verstehe nicht, wie es funktioniert ... – ocrampico

2

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

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

Für jemanden wird nicht ausgeführt: für% f in (* .txt) tun (Ren "% ~ nf% ~ xf" "% ~ nf 1.1% ~ xf ") – nyconing

16

Vergewissern Sie sich, dass es mehr ? gibt als Zeichen in dem längsten Namen sind:

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

How does the Windows RENAME command interpret wildcards? Info für mehr sehen.

Neue Lösung - 2014/12/01

Für diejenigen, die wie reguläre Ausdrücke, gibt es JREN.BAT - ein Hybrid JScript/Batch-Befehlszeilenprogramm, das nach vorne auf jeder Windows-Version von XP laufen wird.

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

oder

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

+1 '????????????????????????????' Wissen Sie, wie lange Dateinamen können Sein ?? –

+3

Die absolute maximale Dateinamenslänge beträgt 255 Zeichen. Das praktische Limit für die meisten Szenarios ist jedoch geringer, da die maximale Gesamtlänge des Pfades, die von der Windows-Benutzeroberfläche unterstützt wird, 259 Zeichen beträgt. Die Gesamtpfadlänge enthält Informationen zu Volumes, Ordnern und Dateinamen sowie einen Nullabschluss. Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/aa365247.aspx. – dbenham

+0

Danke für die Einführung von jren, es war genau das, was ich brauchte, einfach kurz und schnell. Btw, mit ihm ist es möglich [shorthand character classes] (http://www.regular-expressions.info/shorthand.html) wie '\ d' oder' \ w' zu verwenden. – Armfoot

0

ich damit auch verwirrt war ... nicht wie die Klammern, die Fenster in stellt, wenn Sie in der Masse umbenennen. In meiner Recherche entschied ich mich stattdessen ein Skript mit PowerShell zu schreiben. Super einfach und funktionierte wie ein Charme. Jetzt kann ich es verwenden, wenn ich die Umbenennung von Dateien im Stapel verarbeiten muss ... was häufig vorkommt. Ich nehme Hunderte von Fotos und die Kamera Namen sie IMG1234.JPG etc ...

Hier ist das Skript schrieb ich:

# 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, dass da draußen jemand hilfreich.

Subcan

9

Der folgende Befehl würde die Aufgabe erledigen.

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

Quelle: Rename file extensions in bulk

+0

+1 Ich denke, das ist der einfachste zu erinnern, viel einfacher als die 'for'-Syntax von cmd, aber die Enttäuschung ist, dass es einen neuen cmd.exe-Prozess für jede Iteration erzeugen muss. Das macht dies sehr ineffizient und langsam wie Melasse. –

1

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

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

Schritt 1:

Wählen Sie alle Dateien (Strg + A)

Schritt 2:

Dann wählen Umbenennen Option

enter image description here

Schritt 3:

Wählen Sie die Dateinamen ... für ex: Meinedat

es automatisch zu myfile (01) umbenennen, myfile (02) ,, .....

Wenn Sie Räume & Halter ersetzen .. weiter Schritt 4

Schritt 4:

Öffnen Sie den Windows Powershell aus dem aktuellen Ordner

enter image description here

Schritt 5:

Für leeren Raum ersetzen zu unterstreichen (_)

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

Schritt 6:

Für offenen ersetzen Halter

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

Für nah ersetzen Halter

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

Diese Powershell ist großartig. Vielen Dank –

0

Dies funktioniert für Ihren speziellen Fall:

ren file?.txt "file? 1.1.txt"