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, 4026 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
Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...