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

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, 3403 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Powershell - In Textdatei suchen und ersetzen

Frage von Raaja89 zum Thema Batch & Shell ...

Verschlüsselung & Zertifikate
Kryptorätsel Teil 1: Die Geheimschrift für Liebende (1)

Link von netzwerker-92 zum Thema Verschlüsselung & Zertifikate ...

Batch & Shell
gelöst 2 Csv -Dateien zum Teil zusammenfügen (6)

Frage von Piotrney zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...