Windows 10中的命令行JSON处理器JQ出现问题,64位

Windows 10中的命令行JSON处理器JQ出现问题,64位,json,windows,command-line,jq,processor,Json,Windows,Command Line,Jq,Processor,我已从计算机上的C:\program Files\jq\文件夹下载了程序jq-win64.exe,并将其安装在该文件夹中。 我还将程序的路径添加到Windows 10中systemvariable字符串的末尾:;C:\ProgramFiles\curl\;C:\ProgramFiles\jq\ 在VisualStudio代码的一个终端窗口中,我正在运行服务器。 在另一个终端窗口中,我试图执行curl-slocalhost:3000 | jq命令 终端窗口1: C:\Users\SteinarV\

我已从计算机上的C:\program Files\jq\文件夹下载了程序jq-win64.exe,并将其安装在该文件夹中。 我还将程序的路径添加到Windows 10中systemvariable字符串的末尾:;C:\ProgramFiles\curl\;C:\ProgramFiles\jq\

在VisualStudio代码的一个终端窗口中,我正在运行服务器。 在另一个终端窗口中,我试图执行curl-slocalhost:3000 | jq命令

终端窗口1: C:\Users\SteinarV\PROFF\u JAVASCRIPT\PROJECT\smartHouse

node server.js 在端口3000上运行的API

终端窗口2: C:\Users\SteinarV\PROFF\JAVASCRIPT\PROJECT\smartHouse>curl-s localhost:3000 | jq

“jq”不被识别为内部或外部命令, 可操作程序或批处理文件

。。。不明白为什么jq不被认可。 有人能帮忙吗

我已从计算机上的C:\program Files\jq\文件夹下载了程序jq-win64.exe,并将其安装在该文件夹中

正如您所指出的,您有一个名为jq-win64.exe的文件,但您正在尝试执行命令jq。您需要将文件重命名为jq.exe,或者需要使用命令jq-win64

有关输入命令时Windows如何在路径中查找和执行程序的详细说明,请参阅。具体而言:

…shell现在按列出的顺序搜索PATH环境变量指定的每个目录,以查找与命令名匹配的可执行文件。如果找到匹配项,可执行文件执行的外部命令

…如果命令名不包含文件扩展名,则shell将逐个添加PATHEXT环境变量中列出的扩展名,并在目录中搜索该文件名。请注意,shell在继续搜索下一个目录(如果有)之前,会尝试特定目录中所有可能的文件扩展名

您在注释中指出,即使文件名匹配,相同的错误仍然存在。请注意,每个正在运行的程序都有自己的一组环境变量,这些变量不会因全局更改而更新。进行全局更改后,需要关闭并重新打开cmd.exe窗口。另见。您可以使用path命令来验证特定终端会话是否继承了您定义的path变量,从而缩小问题范围

您表示问题仍然存在。您需要使用可用的工具进一步缩小范围:

尝试使用程序的完整路径运行程序:

"C:\Program Files\jq\jq-win64.exe" --help
这将确认程序在您认为的位置存在,并且可以从终端运行

尝试在没有路径及其扩展名的情况下运行程序:

jq-win64.exe --help
set PATH=C:\Program Files\jq
jq-win64.exe --help
如果这可以工作,但在没有扩展名的情况下运行程序无法工作,则可能已将PATHEXT设置为不包含.EXE的内容

尝试将终端中的路径显式设置为仅包含程序目录而不包含其他内容,然后使用其完整扩展名运行该路径:

jq-win64.exe --help
set PATH=C:\Program Files\jq
jq-win64.exe --help
请注意,在该测试之后,您需要关闭终端窗口并启动一个新窗口以重置路径

如果这是可行的,那么您的路径可能不匹配

我已从计算机上的C:\program Files\jq\文件夹下载了程序jq-win64.exe,并将其安装在该文件夹中

正如您所指出的,您有一个名为jq-win64.exe的文件,但您正在尝试执行命令jq。您需要将文件重命名为jq.exe,或者需要使用命令jq-win64

有关输入命令时Windows如何在路径中查找和执行程序的详细说明,请参阅。具体而言:

…shell现在按列出的顺序搜索PATH环境变量指定的每个目录,以查找与命令名匹配的可执行文件。如果找到匹配项,可执行文件执行的外部命令

…如果命令名不包含文件扩展名,则shell将逐个添加PATHEXT环境变量中列出的扩展名,并在目录中搜索该文件名。请注意,shell在继续搜索下一个目录(如果有)之前,会尝试特定目录中所有可能的文件扩展名

您在注释中指出,即使文件名匹配,相同的错误仍然存在。请注意,每个正在运行的程序都有自己的一组环境变量,这些变量不会因全局更改而更新。进行全局更改后,需要关闭并重新打开cmd.exe窗口。另见。您可以使用path命令来验证特定终端会话是否继承了您定义的path变量,从而缩小问题范围

您表示问题仍然存在。您需要使用可用的工具进一步缩小范围:

尝试使用程序的完整路径运行程序:

"C:\Program Files\jq\jq-win64.exe" --help
这将确认程序在您认为的位置存在并且可以运行 从终点站

尝试在没有路径及其扩展名的情况下运行程序:

jq-win64.exe --help
set PATH=C:\Program Files\jq
jq-win64.exe --help
如果这可以工作,但在没有扩展名的情况下运行程序无法工作,则可能已将PATHEXT设置为不包含.EXE的内容

尝试将终端中的路径显式设置为仅包含程序目录而不包含其他内容,然后使用其完整扩展名运行该路径:

jq-win64.exe --help
set PATH=C:\Program Files\jq
jq-win64.exe --help
请注意,在该测试之后,您需要关闭终端窗口并启动一个新窗口以重置路径


如果这样做有效,可能是因为路径不匹配。

可能是因为二进制文件名为jq-win64?目录c:\jq*.exe/s返回什么?目录c:\jq*.exe/s返回。驱动器C中的卷是OS卷序列号是48C3-C434 C:\Program Files\jq 06.06.2020 22:59 3 525 307 jq.exe 1文件3 525 307字节的目录。看来这个程序已经被识别了。但是命令curl-slocalhost:3000 | jq。不工作重新启动计算机并重试,因为二进制文件名为jq-win64?目录c:\jq*.exe/s返回什么?目录c:\jq*.exe/s返回。驱动器C中的卷是OS卷序列号是48C3-C434 C:\Program Files\jq 06.06.2020 22:59 3 525 307 jq.exe 1文件3 525 307字节的目录。看来这个程序已经被识别了。但是命令curl-slocalhost:3000 | jq。不工作重新启动计算机并重试已将程序名更改为jq.exe。但是当我尝试执行curl-s localhost:3000 | jq时。在终端窗口“C:\Windows\System32\cmd.exe”中,无法识别“jq”。我也试过GitBash。SteinarV@workstation00MINGW64~/PROFF_JAVASCRIPT/PROJECT/smartHouse master$curl-s localhost:3000 | jq。结果:bash:jq:command not found 23写入正文失败在该终端中运行path命令时显示了什么?它是否显示您设置的路径?当我在终端中运行path命令时,我得到。我计算机上的所有路径。和C:\ProgramFiles\jq\。所以它显示了我的路径,我没有足够的信息来解决这个问题。你需要试着缩小范围,就像我解释的那样——试着把范围缩小到再现问题的最小情况。你能从终端运行它吗?即使从路径中删除了所有其他内容,您仍然存在问题吗?明确地说,我不建议删除全局路径中的所有内容,只建议使用set在终端窗口中对其进行测试。1此测试正在运行:C:\>C:\Program Files\jq\jq.exe-帮助输出:jq-commandline JSON processor[version 1.6]用法:C:\Program Files\jq\jq.exe[选项][文件…]C:\Program Files\jq\jq.exe[选项]-args[strings…]C:\Program Files\jq\jq.exe[options]-jsonargs[JSON\u text…]jq是一个处理JSON输入的工具,将给定的过滤器应用于其JSON文本输入,并在标准输出上以JSON的形式生成过滤器的结果……而且我已经将程序名更改为jq.exe……但是当我尝试在终端窗口“C:\Windows\System32\cmd.exe”中执行curl-s localhost:3000 | jq…时,我得到了jq’未被识别。我也尝试过Git Bash。SteinarV@workstation00MINGW64~/PROFF_JAVASCRIPT/PROJECT/smartHouse master$curl-s localhost:3000 | jq…结果:bash:jq:command not found 23写入正文失败在该终端中运行path命令时显示了什么?它是否显示了您设置的路径?当我在t中运行path命令时终端我得到…我计算机上的所有路径…和;C:\Program Files\jq\…因此它显示了我设置的路径我没有足够的信息来为您解决这个问题。您需要尝试缩小范围,就像我解释的那样-尝试将其缩小到再现问题的最小情况。您能从t运行它吗terminal?即使从路径中删除了所有其他内容,您仍然存在问题吗?要清楚,我不建议从全局路径中删除所有内容,只建议使用set在终端窗口中对其进行测试。1此测试正在运行:C:\>C:\Program Files\jq\jq.exe-帮助输出:jq-命令行JSON处理器[版本1.6]用法:C:\Program Files\jq\jq.exe[选项][文件…]C:\Program Files\jq\jq.exe[选项]-args[字符串…]C:\Program Files\jq\jq.exe[选项]-jsonargs[JSON\U文本…]jq是一个处理JSON输入的工具,将给定的过滤器应用于其JSON文本输入,并在标准输出上以JSON的形式生成过滤器的结果……等等