Windows-Batchdatei Umbenennen mehrerer Punkte

654
user452056

Ich versuche einfach, eine Datei wie X.TWO.THREE nach DATE.X.TWO.THREE zu kopieren. X ist eine Konstante, während das Datum in der Zukunft hinzugefügt wird. Jetzt habe ich auch eine Konstante dafür benutzt. Wenn ich versuche, die Datei umzubenennen, z.

xcopy C:\test\X.??????.?????? C:\test2\DATE.X.??????.?????? 

Es wird eine Fehlermeldung angezeigt, dass der zweite Dateiname nicht erweitert werden kann, damit er zuerst übereinstimmt.

Hast du eine Idee, wie man ein Umbenennen mit mehreren Punkten durchführen kann?

Vielen Dank.

0

2 Antworten auf die Frage

2
Karan

Einzeilige Version:

for %f in ("C:\Test\X.*") do copy "%~f" "C:\Test2\DATE.%~nxf" 
Ich liebe Antworten wie diese :) +1 Abraxas vor 9 Jahren 0
Keine Stimmen mehr - habe die wichtigsten Fragen und so durchgegangen ... Ich habe es versucht. Gib ein paar Stunden und ich versuche es nochmal =) Abraxas vor 9 Jahren 0
Wäre wahrscheinlich mit mehreren Punkten in der Dateimaske besser: `... in (" c: \ test \ x. *. * ") Do ...` dbenham vor 9 Jahren 0
@dbenham: Danke, aber kannst du erklären, wo x. * ausfallen und x. *. * erfolgreich sein kann? Karan vor 9 Jahren 0
Entschuldigung, mein Fehler - `x. *` Und `x. *. *` Ergeben genau dasselbe Ergebnis. Ich hatte vor, Dateien zu ignorieren, die nicht mindestens zwei Punkte hatten. Die eigentliche Lösung, die die Verarbeitung auf Dateien mit zwei oder mehr Punkten beschränkt, erfordert die Änderung in `for / f" eol =: delims = "% F in ('dir / b X. * ^ | Findstr / i" X \ .. * \ . "') do ...` dbenham vor 9 Jahren 0
@dbenham: Gotcha. Ja, natürlich funktioniert findstr mit Platzhaltern oder einem kleinen Regex, der bei Bedarf hinzugefügt wird, wenn diese Anforderung vorhanden ist. Karan vor 9 Jahren 0
Da gehst du hin :) Abraxas vor 9 Jahren 0
0
td512

Das wird funktionieren:

xcopy C:\test\X.??????.?????? C:\test2\ ren X.??????.?????? DATE.X.??????.?????? 

Erst kopieren, dann umbenennen