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, 11537 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH ini Datei Datei auslesen (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Dateiname abhängig vom Änderungsdatum auslesen (6)

Frage von freaktastisch zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...