windows findstr.exe 不工作

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3933846/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 15:24:46  来源:igfitidea点击:

findstr.exe is not working

windowsregexcommand-line

提问by Rites

My system has findstr.exe but when I try to execute it, it gives me the following error

我的系统有 findstr.exe 但是当我尝试执行它时,它给了我以下错误

FINDSTR: Bad command line

Tried so many things but unable to fix. I need to use regex in my batch script.

尝试了很多东西,但无法修复。我需要在批处理脚本中使用正则表达式。

Any other suggestion?

还有什么建议吗?

采纳答案by paxdiablo

You need to at least give it some strings to look for. That error message is the one you get if it doesn't think you've provided a search string (everything else is optional):

你至少需要给它一些字符串来寻找。如果它认为您没有提供搜索字符串(其他所有内容都是可选的),则会收到该错误消息:

C:\Documents and Settings\Pax> findstr /?
Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \    Word position: end of word

For full information on FINDSTR regular expressions refer to the online Command
Reference.


For example, this shows how you can use regular expressions:

例如,这显示了如何使用正则表达式:

C:\Documents and Settings\Pax> type qq.cmd
        @setlocal enableextensions enabledelayedexpansion
        @echo off
        set startdir=%cd%
        set temp=%startdir%
        set folder=
    :loop
        if not "x%temp:~-1%"=="x/" (
            set folder=!temp:~-1!!folder!
            set temp=!temp:~1,-1!
            goto :loop
        )
        echo.startdir = %startdir%
        echo.folder   = %folder%
        endlocal
C:\Documents and Settings\Pax> findstr d.r% qq.cmd
        set temp=%startdir%
        echo.startdir = %startdir%
        echo.folder   = %folder%
C:\Documents and Settings\Pax> findstr
FINDSTR: Bad command line

回答by live-love

For anyone else who is struggling with this, try this simple syntax for a start:

对于正在为此苦苦挣扎的其他人,请尝试使用以下简单的语法:

findstr /s /i hello *.*

(ignore case, search all subdirectories in current folder)

(忽略大小写,搜索当前文件夹下的所有子目录)

回答by Vantomex

Of course, you didn't specify any command after FINDSTRcommand. Type FINDSTR /?for help.

当然,你没有在FINDSTR命令后指定任何命令。键入FINDSTR /?寻求帮助。

This an example how to use FINDSTRcommand:

这是如何使用FINDSTR命令的示例:

FINDSTR /R /C:"your_regex" filename.txt

回答by The Archetypal Paul

That's what findstr says when you give it no command line arguments. Try

这就是 findstr 在您不提供命令行参数时所说的内容。尝试

 findstr/?