simonavenia
Goto Top

Dateinamen per Batch um x Zeichen am Anfang kürzen

Hallo allerseits,

ich habe ein Problem und das geht so:

Ein Programm erzeugt mir Dateien, die z. B. folgendermaßen aussehen:

94512_09-10-10_10-32-50.txt

Dabei sind die ersten fünf Ziffern ein mehr oder weniger willkürlicher Zahlencode, den keiner brasucht, und nach den Unterstrichen folgen Datum und Uhrzeit. Letzteres ist auch ganz praktisch, denn so könnte man die Dateien schon chronologisch sortiert in einem Ordner verwalten - aber die ersten fünf Zeichen verhindern das leider.

Ich suche also nach einer Möglichkeit, die Datei mittels Batchdatei von den ersten sechs Zeichen zu befreien.

Viele Grüße,

Simon

Content-Key: 126915

Url: https://administrator.de/contentid/126915

Printed on: April 25, 2024 at 12:04 o'clock

Member: Woolfsmann
Woolfsmann Oct 12, 2009 at 11:37:13 (UTC)
Goto Top
Hi,

ich weiß du suchst eine Batchlösung, die kann ich nicht anbieten aber sollte sich wiedererwartend keiner finden der das eben Hier reinschreibt. Kann ich ne Lösung in Perl anbieten.

#/usr/lib/perl -w
use strict;
my($pfad,$datei,@dir);
$pfad=".";  

opendir(DIR,$pfad)|| die $!;
@dir=grep /\.txt/, readdir(DIR);
foreach $datei (@dir)
{
	if ($datei =~ /(\d{5}_)(.*\.txt)/)
	{
		rename($datei,$2) || die "Fehler beim Umbenennen: $!";  
	}
}
Member: Biber
Biber Oct 12, 2009 at 12:01:04 (UTC)
Goto Top
Moin simonavenia,

wilkommen im Forum.
eine Alternative wäre ein Oneliner vom CMD-Prompt:
(=13:58:44  D:\temp=)
>for %i in (*_??-??-??_*.txt) do @for /f "delims=_ tokens=2,3*" %j in ("%i") do @echo ren "%i" "%j_%k"  
ren "94512_09-10-10_10-32-50.txt" "09-10-10_10-32-50.txt"  
[Das ">" vor dem FOR nicht mit eingeben; das ist mein CMD-Prompt]
Der Schnipsel setzt voraus, dass du dich im Verzeichnis der umzubenamsenden Dateien befindest.

Grüße
Biber
Member: simonavenia
simonavenia Oct 12, 2009 at 12:56:03 (UTC)
Goto Top
Hallo Woolfsmann, hallo Biber,

ich hab keine Ahnung von Perl und mal die CMD-Variante ausprobiert. Wenn ich das wie befohlen in dem Ordner mit der Datei eingebe, wird zwar genau der Text gepromptet, den Biber in Zeile 3 stehen hat - aber mit der Datei passiert nix! Was mach ich falsch?

Grüße,

Simon

EDIT - okay, bin selbst drauf gekommen. Man entfernt also das @echo ;o) Ich hab außerdem mal aus allen % ein %% gemacht und das dann so in ein Batch eingebaut - funktioniert wunderbar!

Vielen Dank dafür!

Kleiner Nachschlag: Was müsste man denn tun, um die 09 am Anfang in 2009 zu ändern?

EDIT - hab jetzt mal mein Gehirn angestrengt und es selbst glöst. Vielen Dank nochmal für den Denkanstoß!