Top-Themen

Aktuelle Themen (A bis Z)

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 Zeile aus Datei auslesen und diese dann umbenennen

Mitglied: S-Mixie

S-Mixie (Level 1) - Jetzt verbinden

05.12.2007, aktualisiert 06.12.2007, 5209 Aufrufe, 7 Kommentare

Hallo!

Ich habe folgendes Problem:

Ich habe einen Ordner voll mit Dateien. Diese Dateien haben alle ganz wilde Dateinamen (Das Programm mit dem diese Dateien erzeugt worden sind lief wurde für ein Unix-System geschrieben...)

In diesen Dateien steht eine Info, wie die Datei heisst. So konnte das Programm immer selbst nachschauen und so eine bessere Ordnung halten)

Diese Datei sieht etwa so aus:

...
2
TC72:18763
PLAST:18768
LAST:18768
#~3
HIER STEHT DER DATEINAME

TC72:18763
PLAST:18768
LAST:18768
...

Ich möchte nun die Zeile nach dem #~3 auslesen und dann die entsprechende Datei dahin umbenennen. Das ganze soll in einem Batch ablaufen, da es sich hier um mehrere Hundert Dateien handelt.

Wie kann ich so etwas am besten realisieren? Ich denke ich müsste irgendwie mit findstr arbeiten, aber mir fehlt da der richtige Ansatz.

Vielen Dank für die Hilfe!

Gruß

S-Mixie
Mitglied: Biber
05.12.2007 um 13:28 Uhr
Moin S-Mixie,

willkommen im Forum.

Schade, Du hast Dir solche Mühe gegeben mit der Aufgabenbeschreibung, aber genau das Entscheidende hab ich nicht verstanden..
Ich möchte nun die Zeile nach dem #~3 auslesen und dann die entsprechende Datei dahin umbenennen.

Nicht verstanden: in der Zeile nach "'#~3" der (Text-)Datei psghpsrghaan.xyz steht "psghpsrghaan.xyz"?
Und wenn ja, was heißt dann "dahin umbenennen"?
Oder heißen die Dateien jetzt "xy[lfdnr]" und der SOLL-Name steht jeweils drin?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
05.12.2007 um 14:54 Uhr
Hallo S-Mixie und auch von mir ein Willkommen!

Unter der Annahme, dass in der entsprechenden Zeile der SOLL-Name steht, könnte das für eine einzelne Datei so gehen:
01.
@echo off & setlocal 
02.
set ZNr= 
03.
for /f "delims=:" %%i in ('findstr /n /x "#~3" %1') do if not defined ZNr set /a ZNr=%%i+1 
04.
for /f "tokens=2 delims=:" %%i in ('findstr /n . %1^|findstr /b "%ZNr%:"') do @echo ren %1 "%%i%~x1"
Wenn Du den Batch zB als "C:\Batches\RenameByCertainLine.cmd" gespeichert hast, kansst Du diesen mit Übergabe der Datei so aufrufen:
01.
C:\Batches\RenameByCertainLine.cmd "D:\Viele Dateien mit wilden Namen\Die erste davon.typ"
Das Umbenennen wird (wegen des "@echo"vor dem "ren") vorerst (durch die Ausgabe des entsprechenden Befehles) nur simuliert.

Dazu wird die erste Zeile, welche nur "#~3" enthält, gesucht und der Name aus der darauf folgenden Zeile entnommen. Falls dort nicht nur der neue Dateiname, sondern auch der Typ steht, wäre der "ren"-Befehl so zu schreiben:
01.
ren %1 "%%i"
Sollte das Ergebnis in Deinem Sinne sein, kannst Du auch alle Dateien eines Ordners auf einmal erledigen:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Viele Dateien mit wilden Namen\*.*" 
03.
 
04.
for %%d in ("%Quelle%") do call :ProcessFile "%%d" 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
set ZNr= 
09.
for /f "delims=:" %%i in ('findstr /n /b "#~3" %1') do if not defined ZNr set /a ZNr=%%i+1 
10.
for /f "tokens=2 delims=:" %%i in ('findstr /n . %1^|findstr /b "%ZNr%:"') do @echo ren %1 "%%i%~x1"
Auch hier wird (solange "@echo" vor dem "ren" steht) nur angezeigt, aber noch nicht wirklich umbenannt.

Grüße
bastla
Bitte warten ..
Mitglied: S-Mixie
05.12.2007 um 16:41 Uhr
Hallo!

Vielen Dank für die ausführlichen Antworten!

@bastla
Genau so war es gemeint. Klappt soweit auch echt Prima!

Lässt sich der do befehl erweitern? Ich habe festgestellt, das ich die Datei nach dem auslesen erst konvertieren muss, bevor die dann konvertierte Datei umbenannt werden darf. D.h. nach dem die Zeile ausgelesen wurde, wird noch ein anderes Programm gestartet, das noch eine Dateiendung hinzufügt.

Ich erklär das mal mit zip (auch wenn die Dateien nicht gezippt werden)
Ich habe die Datei: ABCDEFGH
In dieser Datei steht der eigentliche Dateiname drin "Ich bin die Datei"
Dieser Dateiname wird ausgelesen
Die Datei wird gezippt: ABCDEFGH.zip
Die Datei wird umbenannt: ABCDEFGH.zip -> Ich bin die Datei.zip

Ich hoffe das die erklärung etwas logischer ist ;)

Gruß

S-Mixie
Bitte warten ..
Mitglied: Biber
05.12.2007 um 16:57 Uhr
Moin S-Mixie,

in diesem Fall ist die einzige Stell, an der Du ändern musst, die letzte Zeile in bastlas geCALLtem Block :ProcessFile

Dort ersetze
>...do @echo ren %1 "%%i%~x1"

durch
01.
...do ( 
02.
           machmireinzip.exe %1 [sonstige Paramter] 
03.
            ren %~n1.neueEndung "%%i%.neueEndung" 
04.
            )


Grüße
Biber
Bitte warten ..
Mitglied: S-Mixie
06.12.2007 um 08:19 Uhr
Hallo!

Wenn "machmireinzip.exe %1" aufgerufen wird, dann wird allerdings mit %1 der ganze Pfad angegeben. Damit kommt mein Programm dann auch schon wieder nicht mehr klar. Es darf entweder nur der Dateiname selbst oder der Pfad ohne Anführungszeichen ausgegeben werden. Gibt es da auch noch eine Möglichkeit?

Aber sonst ist das schon sehr sehr gut!!!

Vielen Dank!!

Gruß

S-Mixie
Bitte warten ..
Mitglied: Biber
06.12.2007 um 08:36 Uhr
Moin S-Mixie,

Wenn Du nur Name brauchst :
"machmireinzip.exe %~n1"

Wenn Name und Extension:
"machmireinzip.exe %~nx1"

Grüße
Biber
Bitte warten ..
Mitglied: S-Mixie
06.12.2007 um 12:35 Uhr
Hallo!

Das funktioniert jetzt wunderbar!!!

Ich denke jetzt werde ich mir da mal ein schönes Buch suchen, damit ich nicht immer fragen muss...die batch-funktionalität ist einfach zu praktisch!

Vielen Dank für eure Hilfe!!!

Gruß

S-Mixie
Bitte warten ..
Ähnliche Inhalte
Installation

Mit Powershell in einer Datei eine Zeile auslesen

gelöst Frage von Bommi1961Installation6 Kommentare

Hallo zusammen, wie bekomme ich es hin, das ich einen Bestimmt wert aus einer Zeil auslesen kann? Ich hab ...

Batch & Shell

Bat Datei - Order auslesen in Zeilen

gelöst Frage von jochengBatch & Shell11 Kommentare

Hallo Leute Ich versuche gerade meinen Bilderorder auszulesen und in eine Datei zu speichern. Bisher habe ich autorun cd ...

Batch & Shell

Textdatei Zeile für Zeile auslesen

Frage von RIPUEDBatch & Shell

Hallo, ich würde gerne mit einem Batch-Skript Zeilen aus einer Textdatei einzeln und nacheinander auslesen und diese dann nach ...

Batch & Shell

Dateinamen auslesen dazugehörige Datei suchen und umbenennen

gelöst Frage von Klaus20Batch & Shell13 Kommentare

Hätte mal wieder eine Frage an die Batch Experten. Habe eine Datei mit dem Orginal Namen und möchte daß ...

Neue Wissensbeiträge
Drucker und Scanner
HP-MF-Drucker per Fax angreifbsr
Information von Lochkartenstanzer vor 1 TagDrucker und Scanner2 Kommentare

Endlich eine sinnvolle Verwendung für Faxe: Damit kann man offensichtlich den Drucker übernehmen. lks

Router & Routing

Das pfSense Buch ist jetzt für jeden kostenlos zu beziehen

Tipp von magicteddy vor 2 TagenRouter & Routing2 Kommentare

Bisher war das Buch nur für zahlende Unterstützer verfügbar, jetzt steht für Jedermann kostenlos zur Verfügung. Siehe auch The ...

Firewall

Möglicherweise neue Sicherheitslücke in Mikrotik-Firmware

Information von LordGurke vor 4 TagenFirewall3 Kommentare

Hallo zusammen, vor ein paar Monaten gab es ja bereits eine Sicherheitslücke in der Firmware von Mikrotik-Routern, über welche ...

Erkennung und -Abwehr
Rechner hacken mit Cortana, auch Remote
Information von Lochkartenstanzer vor 5 TagenErkennung und -Abwehr3 Kommentare

heise berichtet über den Vortrag von der Blackhat Open Sesame: Picking Locks with Cortana. Einige Fehler sind schon gefixt, ...

Heiß diskutierte Inhalte
Windows 10
WIN 10 1803 - LTE Stick kein Internetzugriff
Frage von killtecWindows 1022 Kommentare

Hallo, ich habe mit einem Windows 10 1803 Probleme mit einem LTE-Stick. Das gleiche Problem ist bei mehreren Rechnern ...

CPU, RAM, Mainboards
Xeon E5620: noch schnell genug?
Frage von ahussainCPU, RAM, Mainboards19 Kommentare

Hallo allerseits, ich habe die Möglichkeit, aus Restbeständen einen Tower mit Xeon E5620 CPU und 24 GB RAM zu ...

Datenbanken
MySQL Datenbank Import Aufgabe für mehrere .csv dateien
Frage von Marcel1989Datenbanken17 Kommentare

Hi, ich komm nicht weiter. Ich hab auf einem Windows Server 2012 r2 eine MariaDB/MySQL laufen. Nun soll diese ...

Peripheriegeräte
Steckdose(nleiste) mit Schwellwert für off und mit externem Taster
Frage von ahstaxPeripheriegeräte16 Kommentare

Hallo, ich suche eine Steckdose oder Steckdosenleiste mit externem Taster und Schwellwerterkennung. Zu realisieren ist folgendes: Ein PC soll ...