Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Entwicklung Batch & Shell

Mitglied: viking

viking (Level 1) - Jetzt verbinden

28.10.2010 um 12:32 Uhr, 9650 Aufrufe, 5 Kommentare

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
Mitglied: 60730
28.10.2010 um 12:55 Uhr
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

Grob ungetester Demoschnippsel

01.
enable delayedexpansion 
02.
for /f "tokens=1,* delims=" %%a in ('dir /b C:\Test\*') do ( 
03.
	set filename=%%a 
04.
	if  not "!filename!"=="!filename:~-25!" echo ren !filename! !filename:~-25! 
05.
06.
pause
Der Macht nix - zeigt nur ein "was wäre wenn" an, wenn das gut aussieht, das echo vor dem Ren rausnehmen.

Gruß
Bitte warten ..
Mitglied: viking
28.10.2010 um 13:30 Uhr
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
Bitte warten ..
Mitglied: bastla
28.10.2010 um 14:59 Uhr
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
Bitte warten ..
Mitglied: Biber
28.10.2010 um 14:59 Uhr
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.
Bitte warten ..
Mitglied: viking
29.10.2010 um 14:19 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Datum per batch ändern in Tagen (2)

Frage von crawnby zum Thema Batch & Shell ...

IDE & Editoren
gelöst IP und DNS per Batch ändern (9)

Frage von andyw5 zum Thema IDE & Editoren ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...