viking
Goto Top

Dateinamen per batch ändern und bestimmte Zeichenanzahl entfernen und .txt anfügen

Hallo, wieder mal kleine Frage:

Habe folgendes Anliegen.
Ich erhalte aus einem System über ein Exportscpript, Dateien erzeugt.
Diese haben keine Dateiendung, sind aber im Prinzip Textdateien.
Nun möchte ich:
aus dem existierenden Dateinamen immer die ersten 25 Stellen entfernen, und an anschließend an den verbleibenden Rest die Endung ".txt" anfügen.
Beispiel:
Die Dateien befinden sich im Ordner:
C:\Test\
Name von Beispieldateien:
C:\Test\PPExport_28102010_115412.USER
C:\Test\PPExport_28102010_115412.GRUPPEN

Gewünscht:
C:\Test\USER.txt
C:\Test\GRUPPEN.txt

Wie kann ich das lösen?

Gruß viking

Content-ID: 153978

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

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

60730
60730 28.10.2010 um 12:55:48 Uhr
Goto Top
Moin,

streng genommen haben deine beiden Beispiele aber eine Suffix.... - nur keine mit der Winblows was anfangen kann.
daher zwei/drei Gegenfragen....

  • Sind das "echte" Beispiele oder sehen die "echt" anders aus?
  • Sind nur diese Dateien vorhanden?
  • Was passiert mit den schon gekürtzen dateinamen - bleiben die in dem Ordner?
(das könnte schwierig werden) möglicherweise Jacke wie Hose face-wink

Grob ungetester Demoschnippsel

enable delayedexpansion
for /f "tokens=1,* delims=" %%a in ('dir /b C:\Test\*') do (  
	set filename=%%a
	if  not "!filename!"=="!filename:~-25!" echo ren !filename! !filename:~-25!  
)
pause

Der Macht nix - zeigt nur ein "was wäre wenn" an, wenn das gut aussieht, das echo vor dem Ren rausnehmen.

Gruß
viking
viking 28.10.2010 um 13:30:49 Uhr
Goto Top
Hallo,

da tut sich bei mir momentan noch nichts, außer vgl Ende
Suffix, na sollte doch eigentlich das sein, was nach dem "." steht welcher an Stelle 25 ist.
Der "Suffix" hat bei mir eine variable Länge.
Das Kann ich auch nicht beeinflussen, da die Daten über ein Exportscript aus einer Datenbankanwendung kommen und im Prinzip eine Tabelle mit Datendefinition exportiert wird.
Im Prinzip sind das schon echtes Beispiel.

Warum eine Textdatei.
Wenn ich auf manuellem Weg eine Datei nehme und so umbenenne und ein .txt anfüge habe ich eine TXT Datei.
Wenn ich die Ursprungsdatei mit dem Kontexytmenü öffne und den Ediotor auswähle, dann kann ich den Datei mit dem Editor öffnen.

Frage:
Wo definierst Du im Deinem Script die anzufügende Dateiendeung ".txt"?


C:\Test>enable delayedexpansion
Der Befehl "enable" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Test>for /F "tokens=1,* delims=" %a in ('dir /b C:\Test\*') do (
set filename=%a
if not "!filename!" == "!filename:~-25!" echo ren !filename! !filename:~-25!
)

C:\Test>(
set filename=PPExport_28102010_115412.USER
if not "!filename!" == "!filename:~-25!" echo ren !filename! !filename:~-25!
)
ren !filename! !filename:~-25!

C:\Test>(
set filename=PPExport_28102010_115412.GRUPPE
if not "!filename!" == "!filename:~-25!" echo ren !filename! !filename:~-25!
)
ren !filename! !filename:~-25!


C:\Test>pause
Drücken Sie eine beliebige Taste . . .

Gruß viking
bastla
bastla 28.10.2010 um 14:59:10 Uhr
Goto Top
Hallo viking!

Wenn Du "immer die ersten 25 Stellen entfernen" auch als "immer alles bis zum ersten Punkt entfernen" formulieren könntest, dann etwa so:
for /f "tokens=1* delims=." %i in ('dir /b /a-d C:\Test\*.*') do @echo ren "%i.%j" "%j.txt"
Die Zeile ist zur Direkteingabe in der CMD-Shell gedacht und geht davon aus, dass nur Deiner Beschreibung entsprechende Dateien im Ordner "C:\Test" enthalten sind.

Durch das "echo" wird das Umbenennen nur simuliert, und falls Du später daraus einen Batch machen wolltest, wäre jedes %i bzw %j mit doppelten Prozentzeichen zu schreiben.

Grüße
bastla
Biber
Biber 28.10.2010 um 14:59:36 Uhr
Goto Top
Moin viking,

bitte versuche es mal mit einer Änderung der ersten Zeile, die bei T-Mo etwas mundartlich abgeschliffen ist, in
Setlocal EnableDelayedExpansion

Klein-/GROSSschreibung ist egal, Hilfe zu dieser Direktive gibt es bei "setlocal /?" am CMD-Prompt.

Grüße
Biber

Um T-Mo in Schutz zu nehmen - ein handelsüblicher Oldenburger-Platt-Compiler könnte auch "enable delayedexpansion" richtig interpretieren.
viking
viking 29.10.2010 um 14:19:36 Uhr
Goto Top
Zitat von @bastla:
Hallo viking!

Wenn Du "immer die ersten 25 Stellen entfernen" auch als "immer alles bis zum ersten Punkt
entfernen" formulieren könntest, dann etwa so:
for /f "tokens=1* delims=." %i in ('dir /b /a-d C:\Test\*.*') do @echo ren
> "%i.%j" "%j.txt"
> 
Die Zeile ist zur Direkteingabe in der CMD-Shell gedacht und geht davon aus, dass nur Deiner Beschreibung entsprechende Dateien im
Ordner "C:\Test" enthalten sind.

Durch das "echo" wird das Umbenennen nur simuliert, und falls Du später daraus einen Batch machen wolltest,
wäre jedes %i bzw %j mit doppelten Prozentzeichen zu schreiben.

Grüße
bastla


Hallo bastla,

wunderbar, die Variante tut als batch genau so wie ich will.

Danke viking