-1 windows command-line windows-10
仔细阅读这些命令和输出:
where pg_ctl
C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe
where pg_ctl.exe
C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe
where "C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe"
ERROR: Invalid pattern is specified in "path:pattern".
Run Code Online (Sandbox Code Playgroud)
为什么最后一个返回错误而不是输出自身/成功?
我必须能够可靠地输入“命令”或该命令的可执行文件的完整路径,以确定它是否是可执行命令。
检查错误代码,我得到以下信息:
0
0
2
Run Code Online (Sandbox Code Playgroud)
从where /?
:
NOTE: The tool returns an error level of 0 if the search is
successful, of 1 if the search is unsuccessful and
of 2 for failures or errors.
Run Code Online (Sandbox Code Playgroud)
换句话说,它不会为最后一个命令(完整路径)返回正确的 1(搜索不成功),而是返回 2(失败或错误)。但即使它确实返回 1 作为退出代码,那仍然是错误的。它应该返回0,因为路径存在,所以它是一个可执行命令。
哪里有查找文件的命令。如果指定其完整路径,那么使用 where 有何意义?
您可以随时使用
if exist c:\path\filename.ext echo File does exist.
Run Code Online (Sandbox Code Playgroud)
但如果您确实想使用 where 命令,请按照其应有的方式使用它。使用 /r 参数指定路径,并将要搜索的命令作为单独的参数放置。
就像这样:
C:\>where /r "C:\Program Files\PostgreSQL\12\bin" pg_ctl.exe
C:\Program Files\PostgreSQL\12\bin\pg_ctl.exe
C:\>_
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3931 次 |
最近记录: |