majcho
Goto Top

Text mit Findstr suchen und als Variable zum Kopieren derselben Datei nutzen

Möchte gerne den 2 Wert nach einem Suchstring aus Dateien als Variable zum Umbennen/Kopieren derselben Dateien übergeben.

Hier mein Versuchscode, der nicht funktioniert:

FOR /F "delims=" %%i in ('dir /b "C:\*.txt"') do (
for /f "tokens=2" %%g in (findstr "Suchstring: " %%i) do (copy %%i %%g.txt) )

Kann mir jemand mit dem richtigen Code helfen?

Soeben bemerkt, diese ungelöste Frage: Aus Fragmenten einer Textdatei eine neue Textdatei erzeugen bzw. das original bearbeiten geht in die selbe Richtung.


[Edit Biber] Link auf Permalink geändert [/Edit]
Kommentar vom Moderator Biber am Jan 17, 2011 um 05:30:06 Uhr
Zitat von @majcho:
Möchte gerne den 2 Wert nach einem Suchstring aus Dateien als Variable zum Umbennen/Kopieren...
Set / rgc+=1
#722

Content-Key: 158769

Url: https://administrator.de/contentid/158769

Printed on: April 24, 2024 at 09:04 o'clock

Member: rubberman
rubberman Jan 17, 2011 at 00:01:37 (UTC)
Goto Top
Hallo majcho.

Schwer zu sagen woran es liegt.
Ersetze mal copy durch echo und prüfe ob
- Leerzeichen in den Dateinamen vorkommen
- Zeichen im neuen Dateinamen vorkommen, die verboten sind ( \ / : * ? " < > | )
- Zeichen im neuen Dateinamen vorkommen, die maskiert werden müssen ( & ^ )

Grüße
rubberman
Mitglied: 60730
60730 Jan 17, 2011 at 09:50:05 (UTC)
Goto Top
Auch dir den Gruß deiner Wahl face-sad

Wenn man in einer For Schleife eine weitere For Schleife hat, dann???


enabledelayedexpansion?
%%
!!

Für was hat sich eigentlich jemand die Mühe mit der Schleifenanleitung gemacht?

Grußlos
Member: majcho
majcho Jan 17, 2011 at 10:15:56 (UTC)
Goto Top
@echo off &setlocal enabledelayedexpansion
hatte ich gesetzt. Wo finde ich die Schleifenanwendung?
Mitglied: 60730
60730 Jan 17, 2011, updated at Oct 18, 2012 at 16:45:31 (UTC)
Goto Top
Zitat von @majcho:
&setlocal enabledelayedexpansion
hatte ich gesetzt.
Und warum nutzt du dann %% statt !!
Wo finde ich die Schleifenanwendung?
Keine Ahnung - aber wenn du unter Anleitungen suchst .....

btw: Wenn ich (oder jemand anderes) schreibt auch dir keinen Gruß deiner Wahl, ist das eine höfliche Aufforderung.....
Und wenn Biber in seinem B Bereich lediglich seinen Counter setzt und nicht wie sonst üblich länger mit der Problematik befasst...
dann ist entweder Montag oder jemand in Bremen hat eine Vorahnung
Member: majcho
majcho Jan 17, 2011 at 13:44:13 (UTC)
Goto Top
Habe das Tutorial zur FOR-Schleife gefunden, jedoch geht das Tutorial nicht auf die Verschachtelung bzw. die Nutzung des doppelten !! ein.

FOR /F "delims=" %%i in ('dir /b "C:\*.txt"') do (
for /f "tokens=2" %%g in ('findstr "Suchstring:" %%i') do (copy %%i %%g.txt) )

Irgendwie ist ein Fehler im Befehl findstr, welcher?
Member: rubberman
rubberman Jan 17, 2011 at 17:55:25 (UTC)
Goto Top
Hallo Zusammen.

@t-mo
Ich kann keinen Grund entdecken, warum hier ein DelayedExpansion angebracht wäre. Es wird ausschließlich mit den Laufvariablen der Schleifen gearbeitet. Hmm...

@majcho
Vielleicht solltest du das Wort Suchstring: mal mit deinem tatsächlichen Suchstring ersetzten.
Ansonsten einfach mal meinen Tipps und dem von T-MO verlinkten "@echo off" folge leisten.

(auch keine Grüße)
rubberman
Member: majcho
majcho Jan 18, 2011 at 09:51:40 (UTC)
Goto Top
So endlich habe ich es gelöst, so funktioniert der code:

@echo off &setlocal enabledelayedexpansion 

echo -----------------------------------
FOR /F "delims=" %%i in ('dir /a-d /b /s "C:\Users\User\Documents\*.txt"') do (
FOR /f "tokens=2" %%j in ('FINDSTR "Suchstring" "%%~i"') do copy %%i %%j.txt)

[Edit Biber] Codeformatierung geradegezogen. [/Edit]