2013-05-27 49 views
1

我試圖從目錄樹中的文件中獲取行,其中包含單引號或雙引號。舉個例子,我想這些線路用單FINDSTR命令:如何使用FINDSTR獲取簡單的或雙引號的行

  • You should be able to get a "Hello world" program really quick.
  • Enter a value for params 'name' and 'age', please.
  • If no value is entered for 'name' param, the "Hello world" program will throw an exception.

我可以只用單引號(findstr /srn \' *.txt)線,只雙引號(findstr /srn \^" *.txt),或同時使用單引號和雙引號(findstr /srn \'\^" *.txt),但我只需要帶單引號或雙引號的行,只需一個命令。

有關如何實現它的任何想法?

回答

3

爆丸有正確的想法,但不正確的語法。

當試圖逃避FINDSTR和CMD解析器的引用時,它會變得棘手。你想要的正則表達式是['\"],但是你需要爲CMD解析器轉義"

這將工作:

findstr /srn ['\^"] *.txt 

,因此將這個

findstr /srn "['\"]^" *.txt 

,因此將這個

findstr /srn ^"['\^"]^" *.txt 



由於討厭的FINDSTR錯誤,您有可能無法找到包含該字符串的文件。如果啓用8.3短名稱並且文件夾包含擴展名超過3個字符且以.txt開頭的文件,則/S選項可能無法找到文件。 (例如name.txt2)。有關詳細信息,請參閱標有BUG的部分 - 短8.3文件名可能會破壞/ D和/ S選項What are the undocumented features and limitations of the Windows FINDSTR command?

1

使用字符類

findstr /srn ['\^"] *.txt 
+0

如果我嘗試這個命令行塊,直到我停止它,而不打印任何東西。我讀過雙引號在這種情況下可能會導致問題,我想知道該問題的解決方法。 – jgg

+0

@jgg - 一旦引用已經以較早的'''開始,'''不能''''轉義'''參見[我的答案](http://stackoverflow.com/a/16795153/1012053)爲了正確的方法來逃避''''。 – dbenham

+0

@dbenham謝謝;糾正了我的答案 –

相關問題