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

Mit Batch Datei nach bestimmten Zeichen im Inhalt mit fixer Position umbenennen

Frage Entwicklung Batch & Shell

Mitglied: alexx65

alexx65 (Level 1) - Jetzt verbinden

15.06.2010 um 10:53 Uhr, 4027 Aufrufe, 8 Kommentare

Für folgendes Problem suche ich eine Lösung:
Unter Windows möchte ich mit einer Batch Datei eine Datei text.txt umbenennen.
Der neue Dateiname sollen exakt die Zeichen 15 bis 24 des Dateinhalts in der 2. Zeile sein, Endung wie gehabt .txt
Mitglied: Snowman25
15.06.2010 um 11:08 Uhr
01.
@Echo off && setlocal enabledelayedexpansion 
02.
set a=0 
03.
for /F "delims=" %%I in (test.txt) do ( 
04.
	if !a!==1 ( 
05.
		set b==%%I 
06.
		ren text.txt !b:~15,24!.txt 
07.
	)  
08.
	set /a a=!a!+1 
09.
)
Bitte warten ..
Mitglied: bastla
15.06.2010 um 11:14 Uhr
@Snowman25
Abgesehen davon, dass der Teilstring eher mit
!b:~14,10!
gebildet werden sollte, wäre auch zu berücksichtigen, ob die Dateinamen Rufzeichen enthalten (könnten) - in diesem Fall wäre "delayedExpansion" keine so gute Idee ...

Grüße
bastla
Bitte warten ..
Mitglied: Snowman25
15.06.2010 um 11:22 Uhr
Zitat von bastla:
@Snowman25
Abgesehen davon, dass der Teilstring eher mit
!b:~14,10!
gebildet werden sollte, wäre auch zu berücksichtigen, ob die Dateinamen Rufzeichen enthalten (könnten) - in diesem
Fall wäre "delayedExpansion" keine so gute Idee ...
Huch stimmt

also nochmal:
01.
@Echo off && setlocal enabledelayedexpansion 
02.
set a=0 
03.
for /F "delims=" %%I in (test.txt) do ( 
04.
	if !a!==1 ( 
05.
		set b==%%I 
06.
		set b==!b:~^!=^^^!! 
07.
		ren text.txt !b:~14,10!.txt 
08.
	)  
09.
	set /a a=!a!+1 
10.
)
Grüße
bastla

Grüße
Snow

PS:
!b:~^!=^^^!! ist schon ein eigenartiges Konstrukt...
Bitte warten ..
Mitglied: bastla
15.06.2010 um 11:32 Uhr
Hallo alexx65 und willkommen im Forum!

Soll es eigentlich tatsächlich nur um eine einzelne Datei gehen und wenn ja, woran ist diese zu erkennen / wie wird sie ggf übergeben?
Jetzt habe ich's hoffentlich richtig gelesen - falls ja, dann etwa so:
01.
@echo off & setlocal 
02.
set "Datei=D:\Test.txt" 
03.
set "Zeile=" 
04.
for /f "usebackq skip=1 delims=" %%i in ("%Datei%") do if not defined Zeile set "Zeile=%%i" 
05.
if defined Zeile ren "%Datei%" "%Zeile:~14,10%.txt"
Grüße
bastla

[Edit] Um immer das Verzeichnis der Batchdatei zu verwenden, könnte die Zeile 2 auf
set "Datei=%~dp0Test.txt"
geändert werden.
[/Edit]
Bitte warten ..
Mitglied: bastla
15.06.2010 um 11:35 Uhr
@Snowman25
Wenn "delayedExpansion" verwendet wird, kannst Du "!" nicht maskieren - es wird in diesem Fall als Begrenzungszeichen der Variablen einfach verschwinden, bzw wenn es ein zweites "!" in Dateinamen gibt, ist auch der Teil dazwischen weg ...

Grüße
bastla
Bitte warten ..
Mitglied: Snowman25
15.06.2010 um 11:47 Uhr
Naja. 'nen Versuch wars wert. Ansonsten lässt sich ja auch alles maskieren (oft auch unerwünscht). nur da wo man's braucht gehts wieder net
Also muss man einfach davon ausgehen, dass kein Ausrufezeichen im Textabschnitt vorkommt. Ausserdem sollten Anführungszeichen um den dateinamen im REN-Befehl sein.

funktionierende Version:
@Echo off && setlocal enabledelayedexpansion 
set a=0 
for /F "delims=" %%I in (test.txt) do ( 
	if !a!==1 ( 
		set b==%%I 
		ren test.txt "!b:~14,10!.txt" 
	)  
	set /a a=!a!+1 
)
Bitte warten ..
Mitglied: alexx65
15.06.2010 um 11:54 Uhr
Hallo bastla, ja es soll jeweils nur eine einzelne Datei umbenant werden. Sie liegt in dem Verzeichnis, in dem auch die Batch Datei liegen wird, und hat (vor Umbenennung) immer einen identischen Namen, also zB text.txt.
Es geht dabei übrigens um täglich exportierte Kontoauszüge, die das Buchungsdatum als Dateinamen bekommen sollen, und der befindet sich wie geschrieben an einer fixen Position in der 2. Zeile.
Thx für die schnellen Antworten, werde es gleich mal testen!
Bitte warten ..
Mitglied: alexx65
15.06.2010 um 12:04 Uhr
Jetzt klappt's! Dein letzter Ansatz macht's genau wie gewünscht
Bitte warten ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (17)

Frage von Driphex zum Thema Exchange Server ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...