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, 9844 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch E-Mail Body aus txt lesen und einfügen (9)

Frage von pdiddo zum Thema Batch & Shell ...

Batch & Shell
gelöst Mittels Batch eine Uhrzeit aus einer .txt auslesen und verabeiten (4)

Frage von Beatzler zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (50)

Frage von sabines zum Thema Internet ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
Windows 2016 Hyper-V und VHDS (18)

Frage von emeriks zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...