2016-03-21 5 views
0

Ich versuche, einige Bash-Code in ein Windows-Batch-Skript zu konvertieren. Eine der Zeilen, die ich in meinem Bash-Skript, istWie benutze ich findstr um nach verschiedenen Strings zu suchen?

if echo "$*" | egrep -q -- '-?|-h|--help'; then 

Grundsätzlich sucht er alle der Skriptargumente für die Optionen -?, -h oder --help. Was ich gerne wissen würde, ist, wie würde ich das konvertieren, um findstr unter Windows zu verwenden? Hier ist, was ich bis jetzt habe:

set args=%* 
echo %args:"=% | findstr %= What goes here? =% > NUL 
if %ERRORLEVEL% == 0 (
) 

Jede Hilfe wäre willkommen, danke! (Ich habe versucht, findstr /? läuft, aber es scheint nicht, etwas zu erwähnen, über mehrere Strings übereinstimmen.)

+0

Irecommwnd Vergleichsoperator zu verwenden 'EQU' anstatt' == 'wahren Zahlenvergleich für' ErrorLevel' zu tun; Der '==' erzwingt String Vergleich ... – aschipfl

Antwort

2

Eine Möglichkeit, dies zu tun:

findstr /c:"-?" /c:"-h" /c:"--help" 
+0

Danke für die Antwort! Nur eine Frage: Ist 'findstr/c: string' äquivalent zur Form' findstr/c: "string" '? –

+0

Ähm ... ja, nehme ich an. Ich benutze immer nur das zitierte Formular, und das ist, was ich empfehlen würde - aber ich denke nicht, dass es wichtig ist, vorausgesetzt, die Suchzeichenfolge enthält keine Leerzeichen oder Sonderzeichen. –

+0

Danke für die Antwort! –

1
findstr /r /c:"\<-?\>" /c:"\<-h\>" /c:"\<--help\>" 

\< bedeutet „Anfang des Wortes“, \> „Ende des Wortes“ (Fehlalarme zu verhindern (zB -hello, --huh, ...)

/r ermöglichen reguläre Ausdrücke der Lage sein, \< zu verwenden und \>