So ermitteln Sie die genaue Übereinstimmung eines Strings in einer Datei mit FIND oder FINDSTR in dos

0

Ich versuche, die genaue Übereinstimmung eines Pfads ("\ Users \ sachin.a.goyal \ Desktop \ test \") zu ermitteln, der sich in einer Datei befindet:

 Biggest.txt:
 1 number: 
 name = DMS 3.0 R2 - Deployment Workbook_APAC v4_WMT 
 size = 15634835 
 path = \Users\sachin.a.goyal\Desktop\test\ 
 2 number: 
 name = Scenarios 
 size = 254 
 path = \Users\sachin.a.goyal\Desktop\test\New folder\

Ich benutze diesen Befehl:

 findstr /x /c:"\Users\sachin.a.goyal\Desktop\test\" Biggest.txt

Nach diesem Befehl bleibt das DOS-Fenster jedoch hängen. Es gibt keinen Fehler, aber es sieht so aus, als würde es einen anderen Parameter erwarten. Bitte helfen Sie.

Sachin
quelle
1
Welches Betriebssystem? Es könnte MS-DOS sein, aber es ist höchstwahrscheinlich nur die Eingabeaufforderung in Windows [etwas]. Ich beschreibe den Beitrag vorerst mit "Windows". Wenn es sich explizit um MS-DOS handelt, können Sie es jederzeit ändern.
Daniel Andersson

Antworten:

0

Das / x funktioniert nicht, da die gesamte Zeile mit der Suchzeichenfolge übereinstimmen muss und in diesem Fall mit einem Präfix versehen ist path =. Auch die \ Symbole müssen maskiert werden, damit sie nicht als Befehle interpretiert werden. Schließlich hilft der reguläre Ausdrucksmodus beim Erfassen der richtigen Zeile, da diese in einem Leerzeichen endet und dann am Zeilenende - das Zeilenende kann als dargestellt werden $:

H:\>findstr /r /c:"\\Users\\sachin.a.goyal\\Desktop\\test\\ *$" biggest.txt
path = \Users\sachin.a.goyal\Desktop\test\

Der Grund für Ihre Suche hängen ist wahrscheinlich einer der \ stimmte mit einem Befehl überein.

Wenn Sie eine Variable verwenden, um den gesuchten Pfad zu speichern, müssen Sie die umgekehrten Schrägstriche trotzdem umgehen. Sie können dies mit der Ersetzungsfunktion tun:

set path="c:\Users\sachin.a.goyal\Desktop\test\"
set path=%path:\=\\%
echo path
c:\\Users\\sachin.a.goyal\\Desktop\\test\\

In der zweiten Zeile steht, dass alle Backslahs durch doppelte Backslashes ersetzt werden. Leider habe ich momentan keine Windows-Box zum Testen, aber möglicherweise müssen Sie die umgekehrten Schrägstriche trotzdem umgehen:

    set path=%path:\\=\\\\%
Paul
quelle
Vielen Dank !! Es hat funktioniert. Das eigentliche Problem ist jedoch, dass ich den Pfad in einer Variablen gespeichert habe und mit dem Wert dieser Variablen in der Datei übereinstimme. Dann muss ich den Pfad in der Variablen speichern, wie Sie mit dem regulären Ausdruck '\' gesagt haben.
Sachin
Ja, das sollte in Ordnung sein - bleiben Sie immer noch mit den Backslashes hängen?
Paul
Ja ... diese Variable enthält den Pfad nur mit einzelnen Backslashes
Sachin
Können Sie es testen, indem Sie die Variable mit doppelten Backslashes füllen, und wenn es funktioniert, werden wir einen Weg finden, dies zu beheben
Paul
Ja, es funktioniert, wenn die Variable so gefüllt wird code set var = \\ Users \\ sachin.a.goyal \\ Desktop \\ test \\ * $
Sachin