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

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".*

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.


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

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)

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.