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

Auslesen einer (Teil)-Zeile, Inhalt zum Dateinamen machen und speichern

Mitglied: derfriedhelm

derfriedhelm (Level 1) - Jetzt verbinden

30.01.2012, aktualisiert 11:04 Uhr, 2582 Aufrufe, 8 Kommentare

Hallo und guten Tag, werte Mitstreiter,

als Neuling hoffe ich das richtige Forum gefunden zu haben.

Hier die Beschreibung meines Problems:

Durch ein Anwenderprogramm erhalte ich aufgeteilte Listen einer Abrechnung, die ich aber nicht weiter beeinflussen kann.
Insbesonders störend wirkt sich hierbei die absolut feste Länge (15 Zeichen !!!) des Dateinamens aus.

In der jeweiligen Datei (es handelt sich um ca. 250 Dateien), die im gleichen Verzeichnis liegen, steht an der gleichen Stelle,
nämlich Zeile 3 Position 1 bis 44 der Name, den ich als Bezeichnung benötige, um zu erkennen, wer diese Liste erhält.

Diese Zeile 3 möchte ich auslesen und die jeweilige Datei dann mit diesem Namen abspeichern.

Die Aktion sollte also so ablaufen, dass entweder alle Dateien oder einzeln nacheinander geöffnet werden, die o.g. Zeile ausgelesen,
die aktuelle Datei unter diesem ausgelesenen Namen gespeichert wird, und dann so weiter bis alle Dateien erledigt sind.

Gibt es für ein solches Problem eine Möglichkeit zur Lösung in ultraEdit ?

Vielen Dank, werde jeden Tipp ausprobieren und berichten
friedhelm
.

432efa58838221931a99c846c0f857c7 - Klicke auf das Bild, um es zu vergrößern
Mitglied: bastla
30.01.2012 um 12:36 Uhr
Hallo derfriedhelm und willkommen im völlig richtigen Forum!

Das sollte sich per Batch lösen lassen - etwa:
01.
@echo off & setlocal 
02.
::set "Ordner=D:\Ordner mit 250 Dateien" 
03.
 
04.
::pushd "%Ordner%" 
05.
for /f "delims=" %%i in ('dir /b/a-d') do call :ProcessFile "%%i" 
06.
::popd 
07.
pause 
08.
goto :eof 
09.
 
10.
:ProcessFile 
11.
if /i "%~nx0"=="%~nx1" goto :eof 
12.
set "Zeile3=" 
13.
for /f "usebackq skip=2 delims=" %%a in (%1) do if not defined Zeile3 set "Zeile3=%%a" 
14.
echo ren %1 "%Zeile3:~,44%" 
15.
goto :eof
Solange am Anfnag der Zeile 13 das echo steht, werden die Dateien nicht wirklich umbenannt, sondern es wird nur der Befehl angezeigt - wenn's gut aussieht, einfach das echo entfernen und Ernst machen ...

Es werden übrigens alle Dateien (außer es gäbe einen gleich bleibenden Namensbestandteil, mit dem eine Einschränkung vorgenommen werden könnte - dann zB
for /f "delims=" %%i in ('dir /b/a-d bherzogenr*') do call :ProcessFile "%%i"
schreiben) verarbeitet - daher bitte die Batchdatei nicht im selben Ordner platzieren ...

Grüße
bastla

[Edit] Zeile 11 angepasst, damit die Batchdatei selbst bei der Verarbeitung übersprungen wird; Zeilen 2, 4 und 6 auskommentiert [/Edit]
Bitte warten ..
Mitglied: derfriedhelm
30.01.2012 um 14:29 Uhr
Hallo und guten Tag, bastla,

vielen Dank für Deine schnelle Reaktion und Hilfe. Ich erhalte mit der folgenden Datei:

@echo off & setlocal
set "Ordner=D:\A50\50_1\LÄMMkom\Versand\Einrichtung_täglich"

pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b/a-d') do call :ProcessFile "%%i"
popd
pause
goto :eof

:ProcessFile
set "Zeile3="
for /f "usebackq skip=2 delims=" %%a in (%1) do if not defined Zeile3 set "Zeile3=%%a"
echo ren %1 "%Zeile3:~,44%"
goto :eof

nachstehende Fehlermeldung:

C:\WINDOWS\system32\cmd.exe (Titelzeile)
Das System kann den angegebenen Pfad nicht finden.
ren "auslesen_umbenennen_speicher.bat" "pushd "%Ordner%""
Drücken Sie eine beliebige Taste . . .

Der Pfad in D: ist korrekt; muss ich die Hoch-/ Anführungszeichen stehen lassen?

Bis hierhin nochmals danke
Friedhelm
.

sorry - zu früh "geschossen" !

ich habe die bat-datei nicht in das Verzeichnis der umzuändernden Dateien abgelegt ( siehe oben).
Jetzt habe ich dies versucht und erhalte eine Übersicht der umzubenennenden Dateien.
Werde es jetzt mit dem Wegnehmen des "echo" versuchen.

Danke
Friedhelm
.



Der Teufel steckt im Detail - aber wem sage ich dies!

Die eingeschaltete "echo"-Funktion zeigt die unzubenennenden Dateien "alt" - "neu" an - prima.
Wenn die bat-Datei im gleichen verzeichnis liegt, wird sie - wie Du schon gesagt hast - auch umgewandelt.
Durch die Änderung der namen habe ich jetzt gesehen, dass einige auch andere Längen haben.
Es gibt eine Gemeinsamkeit unabhängig von der Länge - die Anzahl der Zeichen, die auszulesen sind enden imemr mit einem Leerzeichen und dann ein Doppelpunkt.
1. Was mus ich machen, damit die zuerst beschriebene Fehlermeldung verschwindet?
2. Gibt es eine Chance, dass "Leerzeichen mit anschlißendem Doppelpunkt" zur Begrenzug genutzt werden ? - ansonsten habe ich im Dateinamen die Befürchtung Leerzeichen zu erhalten.

Nochmals Dank
Friedhelm
.
Bitte warten ..
Mitglied: bastla
30.01.2012 um 14:55 Uhr
Hallo derfriedhelm!
Der Teufel steckt im Detail
In der Tat - in diesem Fall in den Umlauten des Pfades ...

Ich ändere mal die Batchdatei, so dass sie sich nicht selbst "verarbeitet" - dann sollte sie im selben Ordner wie die Dateien liegen, womit auch die Zeilen 2, 4 und 6 entbehrlich werden.

Zu den Dateinamen: Handelt es sich bei dem angesprochenen Doppelpunkt oder dem Leerzeichen jeweils um den/das erste/n in der Zeile?

Grüße
bastla
Bitte warten ..
Mitglied: derfriedhelm
30.01.2012 um 15:12 Uhr
Hallo bastla,

sorry, dass ich Dir soviel Arbeit mache, aber

nein das Leerzeichen und der folgende Doppelpunkt stehen jeweils nach dem auszulesenden Namen.

Beispiel:

Einrichtung haus xy :
Einrichtung haus 2 xy :

oder abstrakt

Bezeichnung (längenvariabel) gefolgt von einem Leerzeichen und anschließend dem Doppelpunkt

Danke
Friedhelm
.
Bitte warten ..
Mitglied: bastla
30.01.2012 um 15:26 Uhr
Hallo derfriedhelm!

Ich hatte gemeint, ob es vor dem besagten Doppelpunkt in der Zeile noch einen weiteren geben könnte - falls nein (und in allen Fällen das Zeichen unmittelbar vor dem Doppelpunkt weggelassen werden soll/kann), dann etwa so:
01.
@echo off & setlocal 
02.
for /f "delims=" %%i in ('dir /b/a-d') do call :ProcessFile "%%i" 
03.
pause 
04.
goto :eof 
05.
 
06.
:ProcessFile 
07.
if /i "%~nx0"=="%~nx1" goto :eof 
08.
set "Zeile3=" 
09.
for /f "usebackq skip=2 delims=:" %%a in (%1) do if not defined Zeile3 set "Zeile3=%%a" 
10.
echo ren %1 "%Zeile3:~,~-1%" 
11.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: derfriedhelm
30.01.2012 um 15:42 Uhr
Hallo bastla,

wenn ich die "echo-Funktion" in der Zeiole 10 stehen lasse, erhalte ich folgende Zeilen (Beispiel):

ren "bweeze_petrushe" "Zeile3:~´~-1"
ren "bzuelpicj_krank" "Zeile3:~`~-1"
usw.

wenn ich echo entferne, erhalte ich Folgendes:

Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
usw.

Es scheint, als würde der Name nicht ausgelesen.

Danke nochmals für Deine Hilfe.

Grüße
Friedhelm
.
Bitte warten ..
Mitglied: bastla
30.01.2012 um 15:53 Uhr
Hallo derfriedhelm!

Wenn ich den erwische, der die zweite Tilde in der Zeile 10 verbrochen hat - so sollte das besser gehen:
echo ren %1 "%Zeile3:~,-1%"
Grüße
bastla
Bitte warten ..
Mitglied: derfriedhelm
30.01.2012 um 16:16 Uhr
Hallo bastla,

super - so kann eine Hilfe zur wirklichen Unterstützung werden.
Danke für Deine Geduld - die Umwandlung hat funktioniert - bis auf die Dateinamen, die leider auch Umlaute verwendet haben.
Hier muss ich mir überlegen, ob ich die Schreibweise in den Stammdaten anpassen kann - wird nicht so einfach,
da es hierbei teilweise eingetragene Namen oder z.B. Ortsnamen sind.

Aber das scheint mir im Moment das kleinste Problem.

Danke
Friedhelm
.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen

gelöst Frage von dh0815Batch & Shell5 Kommentare

Hallo Leute, das ist mein erster Post hier und ich möchte mich vorab schon dafür entschuldigen, wenn ich etwas ...

Batch & Shell

Teile eines Dateinamens ändern mit Batch Datei

gelöst Frage von fffffuuuuuuuhhhhBatch & Shell4 Kommentare

Hallo, ich, stelle regelmäßig .mp3-Dateien her, die folgendermaßen von meinem Audioprogramm beschriftet wird: Interpret - Titel _xxxxxx000.mp3 die x stehen für eine ...

Batch & Shell

Einen bestimmten Teil einer Textdatei auslesen

gelöst Frage von Focus1610Batch & Shell5 Kommentare

Hallo, ich brauche mal einen Denkanstoß. Ich bekomme per FTP von einem Kunden täglich mehrere Textdateien. Diese haben unterschiudlich ...

Batch & Shell

Batch datei.txt teile auslesen

gelöst Frage von yellyBirdBatch & Shell2 Kommentare

Hallo zusammen, ich bin realtiv neu hier und hätte eine kleine Frage: ich möchte mit einem batchfile aus einer ...

Neue Wissensbeiträge
Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 2 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 5 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 2 TagenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++28 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows 10
Unter Windows 10 Home 64Bit (1709) kommt Fehler beim Aufruf von verschiedenen Systemprogrammen wie z.B. Gerätemanager
Frage von bitshopWindows 1017 Kommentare

Hallo, beim meinem Onkel haben wir seit längerem das Problem, dass z.B. beim Aufruf des Gerätemanagers eine Fehlermeldung kommt ...

Hyper-V
HyperV DC + DNS + AC
gelöst Frage von HardstylesHyper-V16 Kommentare

Hallo kann mir jemand sagen wieso meine Domänen Computer kein Internetzugang erhalten? Ich hab hier ein Server wo die ...