在 cmd 查找命令中添加多个搜索

Add Multiple Searches in cmd Find Command

我正在寻找在 cmd 的 Find 命令中添加数组或多个搜索,但我一尝试它就什么都不做以下命令在一个输入下工作正常。

对于一个输入:

Find /V "/1001214955/" Scan-FtpOut.txt > Ftp_New.txt

对于多个输入:

Find /V "/1001214955/ | /WENP/ " Scan-FtpOut.txt > Ftp_New.txt
Find /V "/1001214955/ -o /WENP/" Scan-FtpOut.txt > Ftp_New.txt

没有任何工作请协助。

用 2 个命令完成

Find /V "/1001214955/ | /WENP/ " Scan-FtpOut.txt > Ftp_New.txt 发送 {Enter}

Find /V "/1001214955/ -o /WENP/" Scan-FtpOut.txt > Ftp_New.txt 发送 {Enter}

作为我的评论的后续,并向您展示我的评论命令完全按照给定的方式工作,(删除 Scan-FtpOut.txt 中包含确切字符串 /1001214955/ 或包含精确区分大小写的字符串 /WENP/,并将其输出到 Ftp_New.txt).

这里是一个例子 Scan-FtpOut.txt 文件:

      200 PORT command successful.
      150 Opening data connection for /WENP/Faketest (467 bytes).
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec.

      200 PORT command successful.
      150 Opening data connection for /1001214955/Faketest (467 bytes).
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec.

这里是运行@%SystemRoot%\System32\findstr.exe /R /V "\/1001214955\/ \/WENP\/" "Scan-FtpOut.txt" 1>"Ftp_New.txt"之后Ftp_New.txt的内容:

      200 PORT command successful.
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec.

      200 PORT command successful.
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec.

这里是运行@%SystemRoot%\System32\findstr.exe /R /V "[/]1001214955[/] [/]WENP[/]" "Scan-FtpOut.txt" 1>"Ftp_New.txt"之后Ftp_New.txt的内容:

      200 PORT command successful.
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec.

      200 PORT command successful.
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec

这里是运行@%SystemRoot%\System32\findstr.exe /L /V /C:"/1001214955/" /C:"/WENP/" "Scan-FtpOut.txt" 1>"Ftp_New.txt"之后Ftp_New.txt的内容:

      200 PORT command successful.
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec.

      200 PORT command successful.
      226 Transfer complete.
      467 bytes transferred in 2.845 seconds. Transfer rate 0.167KB/sec

如您所见,我最初提供的每个命令的结果都显示了预期的结果!

在所有受支持的 Windows 系统上可用的 PowerShell 具有比 findstr.exe 更完整的 regex 实现。使用 PowerShell 正则表达式意味着您可以使用网络上可用的许多正则表达式信息源。

基于 ,这里是如何在 [cmd] 脚本或命令中完成的。

powershell.exe -NoLogo -NoProfile -Command ^
    "(Select-String -Pattern '^(?!.*(/1001214955/|/WENP/)).*$' -Path .\Scan-FtpOut.txt).Line >'.\Scan-FtpOut-New.txt'"

如果脚本是用 [powershell] 而不是 [cmd] 编写的,那么会更容易理解,而不是 [cmd]