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

Batch - Dateiname aus Datei auslesen

Frage Entwicklung Batch & Shell

Mitglied: dol123

dol123 (Level 1) - Jetzt verbinden

19.06.2007, aktualisiert 12:32 Uhr, 11551 Aufrufe, 4 Kommentare

Hallo,

hab einen Ordner in den täglich mehrere Dateien mit fortlaufender Nummer geschrieben werden.
Bei allen Dateien steht in der zweiten Zeile eine Kontonummer (10 stellig, mit führenden Nullen) mit #EUR angehängt; Beispiel: 0000123456#EUR.

Nun würde ich per Batch gerne die Datei umbenennen, so das die Kontonummer als Dateiname verwendet wird. Ob mit oder ohne dem #EUR ist mir eigentlich egal - schöner wäre zwar ohne - muss aber nicht sein.
Beispiel: aus STA0781.STA sollte 0000123456.STA oder 0000123456#EUR.STA werden.

Bei den Dateien handelt es sich um .STA Dateien - diese kann ich mit dem Editor jedoch problemlos öffnen und bearbeiten.

Hab zu dem Thema bereits einige Beiträge gefunden. Habs leider nicht geschafft eine der dort genannten Lösungen für meine Bedürfnisse umzubauen.


Danke an alle die Antworten!
Mitglied: bastla
19.06.2007 um 11:43 Uhr
Hallo dol123 und willkommen im Forum!

Versuch es mit folgender Batchdatei ("Umbenennen.bat"):
01.
@echo off & setlocal 
02.
set Nr= 
03.
for /f "delims=#" %%i in ('more +1 "%~1"') do if not defined Nr set Nr=%%i 
04.
if defined Nr if not exist "%~dp1%Nr%%~x1" ren "%~1" "%Nr%%~x1"
Beim Aufruf ist die umzubenennende Datei als Argument zu übergeben (auch per Drag and Drop aus dem Explorer möglich), also etwa
01.
Umbenennen.bat STA0781.STA
Falls eine Datei mit dem neuen Namen bereits existiert, wird nicht umbenannt. Was sollte in diesem Fall in einer Endfassung passieren?

Grüße
bastla

[Edit] Berücksichtigung von Pfaden ergänzt [/Edit]
Bitte warten ..
Mitglied: dol123
19.06.2007 um 12:00 Uhr
Danke für die sehr schnelle und hilfreiche Antwort!!

Die Batch funktioniert so weit fehlerfrei. Perfekt wäre es wenn:

- evtl. vorhandene Dateien einfach überschrieben würden.
- der Dateiname nicht beim Aufruf mit übergeben werden müsste, sondern alle Dateien in diesem Ordner nacheinander abgearbeitet werden.


Nochmals Danke für die Hilfe !
Bitte warten ..
Mitglied: bastla
19.06.2007 um 12:13 Uhr
Hallo dol123!

Vielleicht so:
01.
@echo off & setlocal 
02.
set "Ordner=D:\STADaten" 
03.
set "Typ=sta" 
04.
cd /d "%Ordner%" 
05.
for %%f in (*.%Typ%) do call :ProcessFile "%%f" 
06.
goto :eof 
07.
:ProcessFile 
08.
set Nr= 
09.
for /f "delims=#" %%i in ('more +1 "%~1"') do if not defined Nr set Nr=%%i 
10.
if defined Nr move /y "%~1" "%Nr%.%Typ%"
Grüße
bastla
Bitte warten ..
Mitglied: dol123
19.06.2007 um 12:32 Uhr
Erster Test erfolgreich.

Ein großes DANKE für die schnelle Hilfe !!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Zeiten in .txt datei auslesen und Differenz berechnen (14)

Frage von meex87 zum Thema Batch & Shell ...

Batch & Shell
gelöst Doppelte Dateneinträge per Batch aus Datei löschen? HILFE (7)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

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

Heiß diskutierte Inhalte
Webbrowser
Windows 7 unbeliebte Internetseite sperren (15)

Frage von Daoudi1973 zum Thema Webbrowser ...

ISDN & Analoganschlüsse
gelöst Splitter - RJ45 zu RJ11? (13)

Frage von Waishon zum Thema ISDN & Analoganschlüsse ...

LAN, WAN, Wireless
gelöst Suche Firmware Image für Cisco Aironet 1252 (10)

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

Netzwerke
VLAN Verständnissproblem (9)

Frage von Dragan123 zum Thema Netzwerke ...