我在 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"