Finden & kopieren Sie eine Zeichenfolge in einer Datei nur mit der Windows-batch
Rufe ich die Datei die ich suchen will in input.txt und die Zeichenfolge, die ich finden wollen mystring.
Beispiel Inhalt input.txt (real input.txt)
randomstring1<>"\/=:
randomstring2<ORIGINAL>mystring</ORIGINAL>randomstring3
- mystring ist umgeben von den Streichern
<ORIGINAL>
und</ORIGINAL>
müssen gesucht werden - Der string zwischen den beiden
ORIGINAL
-tags sollten in die Zwischenablage kopiert (mit | clip) - mystring und die tags nur einmal vorkommen. Aber Sie haben keine Feste position
- alle Zeichenfolgen, die Sonderzeichen enthalten dürfen (<, >, ", \, /, =, 🙂
Lese ich viel andere Fragen aber um ehrlich zu sein: die FOR-Schleife und SET-Kommando syntax war zu umständlich für mich. Ich denke, meine beste Aufnahme wird der Befehl "FINDSTR". Aber vielleicht ist es auch möglich, mit etwas Hilfe von RegEx-Ausdrücken.
Ich tun nicht möchten, verwenden Sie VBscript, Powershell, SED, FURZ, AWK, grep oder andere zusätzliche tool.
Bitte seien Sie so freundlich und erklären Sie die schwierigen Teile wenn Sie nach einer Lösung.
Ich will es verstehen und vielleicht ist es hilfreich auch für andere.
Mein letzter Versuch, bevor ich aufgegeben habe, war diese test.cmd
@echo off
set "x=randomstring1<>"\/=:randomstring2<ORIGINAL>mystring</ORIGINAL>randomstring3"
set "x=%x:*<ORIGINAL>=%"
set "x=%x:</ORIGINAL>*=%"
set x=%x:~2%
echo %x%
pause
- 'die FOR-Schleife und SET-Kommando syntax war zu umständlich für mich – leider, werden viele features von Windows batch-scripting kann umständlich erscheinen. Einige von Ihnen halten uns peinlich, selbst nachdem Sie an Sie gewöhnt, vor allem wenn man weiß, wie viel einfacher/klarer Lösungen können in andere Skripting-tools oder Sprachen. Jedoch, die möglicherweise für Sie, die FOR /F-Schleife und die SET /P Zuordnung sind wohl die zwei grundlegendsten native Geräte für die Verarbeitung von text-Dateien Zeile für Zeile in die Windows-batch-scripting. Was bedeutet es für dich besser an Sie gewöhnen. 🙂 Und, wer weiß, könnten Sie wachsen schließlich auf Sie. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausgabe:
Als option, Sie können Sie löschen vom Anfang der Zeile bis zum linken Begrenzungszeichen:
... und den ERSTEN token, getrennt durch ein beliebiges Trennzeichen, die Sie wünschen (ie: }):
for /F "delims=" %%a in ('findstr "mystring" input.txt')
. Diese sucht nach "mystring", Recht?. Aber "mystring" ist unbekannt und kann nicht gesucht werden. Es ist umgeben von <ORIGINAL - > und </O>. Vielleicht war meine Beschreibung ist irreführend?echo %variable% | findstr ...
, aber in diesem Fall würde das Ergebnis nur den gleichen Wert oder nichts, je nachdem, ob der Suchtext wird in der variable oder nicht...for /F "delims=" %%a in ('findstr "<original>" "%variable%" ') do set "line=%%a"
----- zweiter Versuch:for /F "delims=" %%a in ('echo %variable% | findstr "<original>" ') do set "line=%%a"
<- meinst du dies so?