Nach dem Trawling durch S.O. Ich habe es geschafft, meine Funktion so zusammenzusetzen, dass sie funktioniert, aber ich verstehe nichts davon. Ich versuche grundsätzlich sicherzustellen, dass eine Datei, die ich verwenden möchte, keine doppelten Anführungszeichen enthält. Ich habe findstr mit der Option/m verwendet, die den Dateinamen zurückgibt.Warum muss ich in einer for-Schleife in einer Batchdatei meine bereits gemerdete Suchzeichenfolge ausschließen?
Wenn ich den Befehl von der cmd Zeile funktioniert es mit diesem:
findstr /V /L /m "\"" filename.txt
Wenn Dateiname hat keine doppelte Anführungszeichen es den Dateinamen zurückgibt, wenn es doppelte Anführungszeichen hat es leer/null/was auch immer zurückgibt. Genau das, was ich will.
Also wollte ich dieses Ergebnis in einer Variablen erfassen, mit einer Lösung auf dieser Website. Ich habe entdeckt, das funktioniert:
setlocal enabledelayedexpansion
set test=
for /F %%a in ('findstr /V /L /m ^"^\^"^" filename.txt') do (@set test=!test! %%a)
echo %test%
Also meine Frage: Mein braucht Suchtext entkommen sein, so geht aus:
"\""
und wird:
^"^\^"^"
aber ich don‘ Ich verstehe, warum ich das tun muss. Kann jemand das erklären?
Technisch muss nur das erste Zitat maskiert werden, also können Sie einfach sagen '^" \ "" ' – SomethingDark
Das hat für mich gut funktioniert:' für/F %% G in ('findstr/V/M^" "" * .txt ') echo %% G' – Squashman
ahhhh richtig ok, nur dieses erste Zitat .. danke. , die es zumindest leichter zu lesen macht. –