Flucht ein Angebot in der findstr-search string
Wie kann ich richtig Flucht ein Angebot in einer Suchzeichenfolge bei der Verwendung von findstr.exe?
Beispiel:
findstr /misc:"namespace=\"" *.cs > ns.txt
Dieser Ausgaben an die Konsole, anstatt auf die Datei, die ich angegeben.
Ich mache das direkt auf der Kommandozeile, nicht eigentlich in eine batch-Datei, obwohl diese Informationen könnten nützlich sein, auch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte korrigieren Sie mich, wenn ich falsch Liege, aber ich glaube, ich habe es herausgefunden:
Diese zu geben scheint die richtige Ausgabe, selbst wenn Sie Leerzeichen in Ihrem Suchbegriff. Es ermöglicht Datei-redirection, piping und zusätzliche Literale in der gleichen findstr.exe Aufruf, um korrekt zu arbeiten.
Den ursprünglichen Befehl in meiner Frage nicht, weil beide cmd.exe und findstr.exe spezielle Verarbeitung für die
"
Charakter. Ich landete mit einem einzigartigen Satz an Anführungszeichen in cmd.exe's Verarbeitung.Den neuen Befehl in meiner Antwort funktioniert, weil
^"
erlaubt das Zitat auf pass von cmd.exe zu findstr.exe und\"
sagt findstr.exe zu ignorieren, dass die quote für die befehlsverarbeitung Zwecke, und behandeln es als ein Zeichen-literal.Bearbeiten:
Gut, meine Lösung war richtig, aber der Grund, warum es richtig ist, war völlig falsch. Ich habe ein kleines Programm geschrieben um es zu testen.
Fand ich heraus, dass cmd.exe übergibt diese Informationen an das Programm, wenn ich übergeben Sie den Befehl Linie:
Mit den Zeichen richtig, cmd.exe geht dieser Eingang auf das Programm (und leitet die Ausgabe in eine Datei):
Gefunden Re: FINDSTR Suche nach einem couble zitieren und leiten/leiten Sie die Ausgabe
Ich habe keine Ahnung, warum das funktioniert.
Funktioniert nicht für Rohrleitungen, die Ausgabe aber. Finden Sie im zugehörigen link Rohrleitungen findstr Ausgabe
Nach meinen tests die korrekte escape-Zeichen backslash:
Wäre dies nicht gerade genug:
?
BEARBEITEN
Wenn Sie waren auf der Suche nach einem Weg, um pass die
"
Charakter innerhalb eines zitierten parameter, dann könnte es (mit deinem Beispiel)(die
"
Charakter wiederholt sich zweimal innerhalb einer in Anführungszeichen eingeschlossenen Zeichenkette).findstr /c:"this is ""a test""" blah.txt
, wenn blah.txt enthält nur die Zeilethis is "a test"
. Doppel-quoting nicht das problem löst, wenn die Räume beteiligt sind.echo this is "a test"|findstr /c:"this is ""a"
. Und dies nicht (beschwert sich über nicht in der Lage, 'a'):echo this is "a test"|findstr /c:"this is ""a "
. +1 für deine Lösung, ich denke, Sie sollten es akzeptieren.""""
(vier Anführungszeichen in einer Zeile) wird eine double-quote als argument an die aufgerufene Programm, das ist, was ich brauchte.