powershell - powershell - powershell “FIND:参数格式不正确”的错误

powershell - powershell - powershell “FIND:参数格式不正确”的错误

我在 powershell 中收到“FIND:参数格式不正确”的错误

以下作品来自 CMD

C:\Users\User>echo abc | find "a"
abc

C:\Users\User>echo abc>z.z

C:\Users\User>find "a" z.z

---------- Z.Z
abc

C:\Users\User>

但这在 powershell 中失败了!

PS C:\Users\User> echo abc | find "a"
FIND: Parameter format not correct
PS C:\Users\User> echo abc >z.z
PS C:\Users\User> find "a" z.z
FIND: Parameter format not correct
PS C:\Users\User>

这里有一个类似的问题管道中的“FIND:参数格式不正确”和“FINDSTR:写入错误” 答案说在 find 命令中使用引号。虽然我有,但我不会使用 /C,因为我并不想计算出现次数。虽然 find /c 也不起作用

PS C:\Users\User> find /C "a" z.z
FIND: Parameter format not correct
PS C:\Users\User>

这不是英国键盘的问题,因为两个管道字符互换了。因为它在 cmd 中有效,而在 powershell 中无效。我尝试从 charmap 复制/粘贴正确的管道字符。如您所见,这也发生在 find [pattern] 文件的格式中。所以没有任何管道。所以,不是管道问题。

这里 powershell 和 find 出了点问题。cmd 没问题。

添加

经过进一步调查

PS C:\Users\User> which find
/cygdrive/c/Windows/system32/find
PS C:\Users\User>

让我怀疑,这是 PATH 问题吗,它与 cygwin 发生冲突?

我不认为这是一个 PATH 问题,因为这只是 cygwin 声明路径位于 c:\windows\system32 的方式,但在某种程度上看起来确实与 cygwin 发生了奇怪的冲突...不确定是否与问题有关。

它正在运行 windows FIND

PS C:\Users\User> find /?
Searches for a text string in a file or files.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         Displays all lines NOT containing the specified string.
  /C         Displays only the count of lines containing the string.
  /N         Displays line numbers with the displayed lines.
  /I         Ignores the case of characters when searching for the string.
  /OFF[LINE] Do not skip files with offline attribute set.
  "string"   Specifies the text string to find.
  [drive:][path]filename
             Specifies a file or files to search.

If a path is not specified, FIND searches the text typed at the prompt
or piped from another command.
PS C:\Users\User>

答案1

这很好用:

write-host "abc" | find "`"a`""

在 Powershell 中,最好使用Select-String

Write-host "abc" | Select-String "a"

相关内容