2017-09-15 47 views
2

すべてのJSファイルを再帰的に処理し、それらを縮小しています。しかし、私はいくつかのJSファイルをそのまま残す必要があります。検索文字列にマイナス文字が含まれていると、FINDSTRが失敗する

私は、for,dirおよびfindstrの組み合わせを使用して多くの成功を収めました。しかし、すでに縮小されたファイル( "-min.js"で終わるファイル)を無視したいときは、FINDSTRコマンドが壊れました。

これは私が使用したコマンドです:次のエラーで

for /f %i in ('dir /b /a-d /s "D:\update" ^| findstr /liv "\admin" ^| findstr /ile ".js" ^| findstr /vile "-min.js" ^| findstr /vile ".min.js"') do echo %i 

を:

FINDSTR: /. ignored 
FINDSTR: /j ignored 
FINDSTR: Bad command line 
FINDSTR: Write error 
FINDSTR: Write error 
FINDSTR: Write error 
FINDSTR: Write error 

問題はハイフンが原因となっている理由が私にはわからないfindstr /vile "-min.js"句で確実です私は/ l(リテラル)フラグを使用しているので問題です。

+1

試しとして扱われていないので、あなたは、エスケープ文字を使用することができますを使用することです'" \ -min.js "'? – melpomene

答えて

2

findstr実行可能ファイルへの引数を処理しているCランタイムは、一連のルールに従います。ルールの1つは、二重引用符を使用して別々の引数内のスペース/特殊文字を保護することですが、コマンドラインがトークン化され、引数が識別されると、別々の引数をメインコードに渡す前に引用符が削除されます。 findstrは(/vileのように)引数のグループ化を受け入れ、それはまた始まる引数を可能にするように、このコマンド

findstr /vile "-min.js" 

は、

argv[0] = findstr 
argv[1] = /vile 
argv[2] = -min.js 

として実行内部処理されることを意味

/または-,-m,-i,-n,-sスイッチ(すべて有効)ar eは受け入れられますが、-.-j(不明)は無視されます。

引数に検索文字列が見つからないため、コマンドラインが正しくありません。

文書(findstr /?)溶液を/c:"stringToMatch"構文

findstr /vile /c:"-min.js" 

それとも-は、オプションの引数最初の文字

findstr /vile "\-min.js" 
+0

@dbenham、これ以上のケースが1つあります。 –

関連する問題