Fügen Sie Text am Ende des Dateinamens (aber vor der Erweiterung) mithilfe einer Batch-Datei hinzu

18

Ich habe eine Liste von Dateien, die im Format auf der linken Seite sind. Ich möchte an jeden Dateinamen eine Zeichenfolge anhängen, jedoch vor der Erweiterung, wie hier gezeigt:

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

In jedem Fall ist die angehängte Zeichenfolge in allen Dateien gleich.

Dies scheint eine so einfache Aufgabe zu sein, aber ich habe einige Probleme, dies in eine Batch-Datei zu schreiben.

Ich habe den renBefehl ausprobiert und einige der Beispiele auf dieser Seite befolgt , aber die resultierenden Dateinamen hängen die Zeichenfolge nach der Erweiterung an:

File 1.txt version 1.txt
Der Truthahn
quelle
Die Informationen auf Ihrem SS64-Link "Diese Seite" stammen aus diesen SU-Fragen und Antworten (mit meinem Segen): Wie interpretiert der Windows-Befehl RENAME Platzhalter? Ich behalte die SU-Antwort (selten) bei, wenn ich neue Funktionen entdecke.
Dbenham

Antworten:

6

für längere Dateinamen müssen Sie ?im Block mit der Masse von etwas mehr hinzufügen?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*
Gummi
quelle
2
Danke, dass du so schnell geantwortet hast! Ich habe den Befehl leicht bearbeitet, um die Dateierweiterung beizubehalten und nur txt-Dateien zu beeinflussen: ren * .txt ??????????????????????????? "Version 1.txt "
TheTurkey
was ist, wenn ich am Anfang etwas anhängen möchte
Farhana Haque
wie viele ? Zeichen werden benötigt?
Kaveesh Kanwal
39

Anstatt sich auf Rens undokumentierte Macken zu verlassen, warum nicht den richtigen Weg gehen?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

Wenn Sie dies in einer Batch-Datei verwenden möchten, denken Sie daran, jedes Prozentzeichen zu verdoppeln.

Karan
quelle
1
Ausgezeichnet! Dies ist eine bessere Antwort jeden Tag. +1
Fr0zenFyr
2

Ich wollte "_A" zu mehreren Dateien hinzufügen und so habe ich es gemacht.

Ich habe zuerst die Erweiterung entfernt, das Suffix hinzugefügt und dann die Erweiterung wieder auf das Original zurückgesetzt. Es hat sicher funktioniert und den Batch-Code einfach gehalten, da ich kein großer Programmierer bin.

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf
Avinash Arunagiri
quelle
2

Für die Leute, die (wie ich) unerfahren sind, gibt es ein paar Software, die das Umbenennen von Massen sehr einfach machen:

  • Dienstprogramm zur Massenumbenennung (kein Open Source)
  • Umbenennen (Open Source)
MagTun
quelle
1

Die Lösung von @bwDraco war gut, hätte aber einfacher gehalten werden können. Meine Dateien waren alle * .jpg und ich wollte sie alle * c.jpg umbenennen. Sie brauchen dafür nur 2 Schritte, nicht 3:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg
Zap Coffey-Brittain
quelle
0

Rekursiv durch Unterordner

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done
Ferroao
quelle