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

Textdatei mit einem Teil des Inhaltes umbenennen

Frage Entwicklung Batch & Shell

Mitglied: fidelio

fidelio (Level 1) - Jetzt verbinden

09.12.2009 um 17:08 Uhr, 3419 Aufrufe, 12 Kommentare

Ich hoffe hier kann mir jemand weiterhelfen, ich google und versuche schon den ganzen Tag, leider ohne Ergebnis.

Mein Problem:

Im Zuge unserer Arbeitsabläufe erhalte ich viele einzelne Textfiles die leider nur mit Documents_Datum_lfdNr.txt abgespeichert werden.
wenn ich eine Datei suche mache ich das im Moment mit der Volltextsuche, das möchte ich aber vereinfachen.

mit
'findstr /N /R /C:"\< [0-9][0-9][0-9] " c:\test\*.txt'
erhalte ich folgende zeile aus dem File retour
c:\test\Documents_03SSEP09_0000234.txt: 257 4792087687 usw.

Ich würde nun gerne die Files auf diese zurückgegeben Nr (257... .txt) umbenennen.

Die NR steht immer in der gleichen Zeile, an der gleichen Position und hat immer die gleiche Länge.

Hat jemand eine Idee, wie man das realisieren kann.

Bitte möglichst einfach antworten, ich kenne mich nicht wirklich gut aus.

Vielen Dank im Vorraus

Andreas
Mitglied: 60730
09.12.2009 um 17:31 Uhr
Salü,

Bitte möglichst einfach antworten, ich kenne mich nicht wirklich gut aus.

Dann nehme ich dein Gerüst einfach mal.... aber ohne Garantie, dass es auch so läuft

ungetestet
01.
findstr /N /R /C:"\< [0-9][0-9][0-9] " c:\test\*.txt >c:\test\umbenamsen.ini 
02.
for /f "Tokens=1,3 delims= :" %%a in (c:\test\umbenamsen.ini) do echo ren "%%a" "%%b.txt">>c:\test\umbenamsen.log

Das sollte funktionieren.
Die umbenamsen.ini und die .log sind zum nachvollziehen, wie die Datei umbenannt wurden. (Falls das mal in die Hose gegangen sein sollte)
edit und denk dran - du wolltest die Leerzeichen in den neuen Dateinamen haben

Gruß
Bitte warten ..
Mitglied: fidelio
09.12.2009 um 17:34 Uhr
Danke für die schnelle Antwort, ich werde es gleich mal versuchen

LG
andreas
Bitte warten ..
Mitglied: fidelio
09.12.2009 um 17:40 Uhr
funkt leider so nicht,

in die umbenamsen.ini schreibt er:

c:\test\Documents_03SEP09_0000234.txt:18: 257 4792087687 1 PRI FFVV

die umbenamsen.log wird erstellt, ist aber leer,

das File wird nicht umbenannt

Irgendeine Idee ??
Bitte warten ..
Mitglied: 60730
09.12.2009 um 17:44 Uhr
Servus,

bin nur noch 5 minuten da...
aber - ich bin ja nicht der einzige...

Für die anderen einfach mal "genau" aufschreiben - wie die Datei später heissen soll und an einem beispiel festkleben. (bitte ohne usw. - Haarklein)

evtl. ist es dass schon?
01.
for /f "Tokens=1,* delims= :" %%a in (c:\test\umbenamsen.ini) do echo ren "%%a" "%%b.txt">>c:\test\umbenamsen.log
Durch das "echo" passiert nix - aber du solltest dort alterdateiname - neuer dateiname mit einem Leerzeichen getrennt - sehen.
Wenn ja - einfach das Echo rausnehmen und das nochmal laufen lassen.

Gruß
Bitte warten ..
Mitglied: fidelio
09.12.2009 um 17:54 Uhr
Servus, Leider nein,
Der Dateiname soll 2574792087687.txt lauten, wobei der Name aus dem File C:\test\*.txt kommt
und bei jedem File in der Zeile 18, auf Position 10-12 und 14-23 zu finden ist.

257 4792087687 1 PRI FFVV

Danke
LG
Bitte warten ..
Mitglied: bastla
09.12.2009 um 19:05 Uhr
Hallo fidelio und willkommen im Forum!

Wenn nicht nur die Positionen in der Zeile, sondern auch die Nummer der Zeile bekannt sind, sollte das (für alle Dateien) etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=C:\Test" 
03.
set "Maske=*.txt" 
04.
 
05.
set ZNr=18 
06.
set Sp1=9 
07.
set L1=3 
08.
set Sp2=13 
09.
set L2=10 
10.
 
11.
pushd "%Ordner%" 
12.
for /f "delims=" %%i in ('dir /b /a-d "%Maske%"') do call :ProcessFile "%%i" 
13.
popd 
14.
goto :eof 
15.
 
16.
:ProcessFile 
17.
set "Zeile=" 
18.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" %1^|findstr /b "%ZNr%:"') do set "Zeile=%%j" 
19.
if not defined Zeile echo %~1: Nummer nicht gefunden! & goto :eof 
20.
 
21.
call set "NameNeu=%%Zeile:~%Sp1%,%L1%%%%%Zeile:~%Sp2%,%L2%%%" 
22.
echo ren %1 "%NameNeu%%~x1" 
23.
goto :eof
Zu überlegen wäre noch, nur Dateien, deren Name mit "Documents_" beginnt (falls ich das richtig verstanden habe), zu verarbeiten, und daher als "Maske" in Zeile 3 "Documents_*.txt" zu verwenden ...

Noch eine Anmerkung zu den Spaltenangaben: Da der "set"-Befehl für das Bilden der Teilstrings die Anzahl der vom Anfang weg zu überspringenden Zeichen benötigt, habe ich zur Vereinfachung für die Position 10 gleich den "Sp1"-Wert 9 angegeben.

Die etwas gewöhnungsbedürftig aussehende Zeile 21 wird übrigens letztlich zu
set "NameNeu=%Zeile:~9,3%%Zeile:~13,10%"
aufgelöst.

Grüße
bastla
Bitte warten ..
Mitglied: fidelio
10.12.2009 um 10:23 Uhr
hallo Bastla.

Danke für Deine Antwort.

Leider funkt das bei mir auch nicht.
Bitte warten ..
Mitglied: 60730
10.12.2009 um 10:54 Uhr
Moin,

"normalerweise" - gilt ein Beitrag nach einem Bastla Post als gelöst.... von daher und weil er sich - wie immer Mühe gegeben hat - mag ich "eigentlich" nicht mehr "reinpfuschen"

Ich versuches trotzdem mal - nun schonmal grob getestet...

01.
findstr /N /R /C:"\< [0-9][0-9][0-9]" c:\test\*.txt >>c:\test\umbenamsen.ini 
02.
for /f "Tokens=1,2,3 delims=:" %%a in (c:\test\umbenamsen.ini) do echo ren "%%a%%b "%%c.txt" >>c:\test\umbenamsen.log 
03.
notepad c:\test\umbenamsen.log
Ich hatte 3 Flüchtigkeitsfehler drin...

  • 1 das c:\ und delims: ignoriert - daher nun Tokens 1,2,3
  • 2 die umbenamsen.ini hatte nur eine Zeile

Und wenn auch das nicht funkt - wobei das nix umbenennt - sondern nur anzeigt - dann wirklich ein komplettes Beispiel dranhängen.

edit: @Biber - das kommt dann davon - wenn einer nicht umrennen umbennen schreibt.... *flitz*

Gruß
Bitte warten ..
Mitglied: fidelio
10.12.2009 um 11:12 Uhr
OK , im Detail:

die Datei mit der ich teste: C:\test\Documents_03SEP09_0000234.txt

XXXXXXXX AN10250
ETKT AGENT COUPON 00000000 ITINERARY
AUSTRIAN 1 OF 1 X96FG8/1A OOS7275O VIESTR 23NOV
NNNNNNNNN/VVVVVVVVVVV MRS TC OBUYOS
03SEP09 OOS7276O STRVIE 26NOV
OBUYOS
REF REST/NONEND/CHNG RESTR
VIE OS STR35.79OS VIE35.79NUC71.58END ROE0.712358
XT8.00AT5.30RA7.41RA4.07DE



EUR 00.00 EXCH/
EUR 00.00YQ INVOICE
EUR 00.00ZY FCI 0
EUR 00.00XT ORIG ISS/
EUR 000.00
257 4792087687 1 PRI FFVV
7906/

In der vorletzten (18.Zeile) steht die Ticketnummer (2574792087687) die der Dateiname werden soll.

Danke
LG
Andreas
Bitte warten ..
Mitglied: fidelio
10.12.2009 um 11:15 Uhr
Hallo nochmal,

Ich sehe gerade, dass in der Antwort die Leerzeichen am Anfang der Zeile weggelassen werden.
257 fängt an der 10. Stelle an
Bitte warten ..
Mitglied: bastla
10.12.2009 um 16:37 Uhr
Hallo fidelio!

Auch ich hatte nicht erwähnt, dass der Befehl zum Umbenennen nicht ausgefüht, sondern nur angezeigt wird - für Deine (um die fehlenden 9 Leerzeichen ergänzte) Testdatei sähe das Ergebnis bei mir so aus:
ren "Documents_03SEP09_0000235.txt" "2584792087687.txt"
Anzumerken ist, dass durch das Wechseln des Ordners per "puhd" keine Pfadangabe für die Quelldatei aufscheint.

Wenn Du nach Zeile 13 in meinem Vorschlag oben noch eine Zeile
pause
einfügst (oder, noch besser, Batches grundsätzlich aus einer CMD-Shell heraus testest), solltest Du eigentlich das selbe Ergebnis erhalten ...

Willst Du die Namensänderung gleich durchführen lassen (sind ja vermutlich ohenehin nur Testdateien), genügt es, das "echo" am Beginn der Zeile 22 zu entfernen.
@TimoBeil
"normalerweise" - gilt ein Beitrag nach einem Bastla Post als gelöst....
Danke für die Einschätzung (die allerdings vermutlich nur von den allergrößten Optimisten geteilt werden kann ).

Grüße
bastla
Bitte warten ..
Mitglied: fidelio
11.12.2009 um 08:53 Uhr
Hallo Bastla!

Ich muß zu meiner Schande gestehen, dass ich das echo wirklich nicht gesehen habe, wenn man das weg nimmt, geht es gleich viel besser.

Ich muß sagen, ich glaube Timo hat mit seiner Einschätzung recht.

Euch allen vielen, vielen Dank,
ich glaube ohne Euch würde ich noch ein halbes Jahr an dem Ding basteln.

LG
Andreas
Bitte warten ..
Ähnliche Inhalte
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
Dateien nach Inhalt umbenennen
gelöst Frage von IcemaniacBatch & Shell4 Kommentare

Hallo Community, ich hoffe Ihr könnt mir weiter helfen. Ich habe in einem Ordner hunderte txt-Dateien auf einem Windows-PC, ...

Batch & Shell
Zeichenfolge in Textdatei durch Inhalt einer Umgebungsvariable ersetzen
gelöst Frage von SarekHLBatch & Shell7 Kommentare

Hallo zusammen, wie kann ich mittels Batch in einer Textdatei die Zeichenfolge durch den Inhalt der Umgebungsvariable %username% ersetzen? ...

Batch & Shell
Powershell Textdatei Inhalt am Anfang einfügen
gelöst Frage von Timo0oBatch & Shell3 Kommentare

Wie kann ich einen Text in eine Textdatei mit Inhalt am Anfang einfügen? So wie ich es hier habe ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 StundeBatch & Shell1 Kommentar

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 3 StundenHumor (lol)5 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 18 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 19 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Linux
OpenSource Groupware
Frage von FA-jkaLinux13 Kommentare

Hallo, ich suche eine Groupware als Alternative zum Exchange. Wesentliche Aufgaben sind die Handhabung von E-Mails (persönliche und gemeinsam ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...