Suche eine string in einer text-Datei im batch-Skript

Wie kann ich die Suche einer Zeichenkette in eine text-Datei Zeile für Zeile, und wenn eine übereinstimmung gefunden, kopieren Sie die ganze Zeile, wo die übereinstimmung gefunden wurde, in eine variable?

Grundsätzlich habe ich eine text-Datei, die enthält die Adresse/Pfad alle Unterordner in einem Ordner. Ich möchte nach einem string gesucht werden in dieser text-Datei (die Zeichenfolge entsprechen, wird nur ein Teil der Zeile) und wenn es eine übereinstimmung gibt, die ich kopieren will in eine variable, die ganze Linie.

Der string kommt aus einer Datei Namen und einmal gibt es ein Spiel in der text Datei, die ich verwenden möchten, die sub-Ordner-Adresse um die Datei zu verschieben es.

Dies ist, was ich gemacht habe bis jetzt:

@ECHO off
::Reads all the folders and subfolders existing in the "root1" folder and   writes the path for each foleder/subfolder into the "1.txt" file
dir /b /s /a:d "...\root1" > "...\1.txt"

::Reads all the files existing in "root2" folder and writes the path of each file into the "2.txt" file
dir /s /b "...\root2\" > "...\2.txt"

SETLOCAL EnableDelayedExpansion

::reads the last file path from the "2.txt" and asign it to a variable
for /f "delims=" %%x in (...\2.txt) do set Build=%%x
set "source=%Build%"
echo %source%

::from (...\...\...\...\a_b.txt) reads the name of the file (a_b.txt) without extension (a_b) and swap the  letter and outputs (b\a) into text file "7.txt"
FOR /F "tokens=6 delims=\" %%G IN (...\2.txt) DO echo %%G > ...\3.txt
FOR /F "tokens=1 delims=." %%G IN (...\3.txt) DO echo %%G > ...\4.txt
FOR /F "tokens=1 delims=_" %%G IN (...\4.txt) DO echo %%G > ...\5.txt
FOR /F "tokens=2 delims=_" %%G IN (...\4.txt) DO echo %%G > ...\6.txt
FOR /F %%G IN (...\5.txt) DO set "two=%%G"
FOR /F %%H IN (...\6.txt) DO set "one=%%H"
echo %one%\%two% > ...\7.txt

::assign the content (one line) from "7.txt" file to a variable
FOR /F %%G IN (...\7.txt) DO set "third=%%G"
echo %third% 

::should search the string from "third" variable in the "1.txt" and when found a match copy the respective line into a variable and put it into "8.txt"
FOR /F  %%a IN ('FINDSTR /x "%third%" ...\1.txt') DO set "xz=%%b"
echo %xz% > ...\8.txt

endlocal    
  • Können Sie einige Beispiel-Dateien und beschreiben Schritt für Schritt, was Sie sehen wollen, passieren mit diesen Beispiel-Dateien?
  • for /F "delims=" %%M in ('find /I "search string" ^< "textfile.txt"') do echo %%I - jede Zeile, die ein match geliefert %%I im for Schleife, anstelle von find Sie können auch findstr...
  • Das ist nicht zu helfen. Bearbeiten Sie Ihre Frage für fügen Sie hilfreiche details und formatieren Sie Sie als code für die Lesbarkeit.
  • FOR /F %%a IN ('FIND /I "%Dritten%" ^< ...\7.txt') DO set "xz=%%a" echo %xz% > ...\8.txt Ausgänge die variable "Dritten". Es ist nicht das, was ich erreichen will. Ich will die ganze Linie.
  • Ihre batch-scheint zu Komplex. Aber ohne weitere Beispiele aus der Praxis ist es schwierig, grep, was Sie suchen.
  • Ich sagte nicht funktioniert, aschipfl. Ich war falsch und ich sehr viel danke.

InformationsquelleAutor GEEE | 2017-01-10
Schreibe einen Kommentar