有没有办法在CMD中找出命令的图像路径?
Is there a way to find out the image path of a command in CMD?
例如,有时当我在 CMD 中键入命令时,它会抛出错误。
我电脑里有那么多版本的java(没有全部是我自己安装的,有些软件的目录里会有一个小java。)
我知道问题的主要原因是PATH环境不正确,但是PATH环境包含这么多目录,(是的,我可以通过将它们一一排除来找出错误。)但我只是想知道是否有办法找出命令的图像路径?
@ECHO Off
SETLOCAL
SET "tempfilename=%temp%\temp###.###"
(CALL :getpath)>"%tempfilename%"
FOR /f "usebackqdelims=" %%a IN ("%tempfilename%") DO (
IF NOT EXIST "%%~a\." (ECHO "%%~a" IN PATH but missing) ELSE (
FOR %%b IN (java.exe java.dll) DO IF EXIST "%%~a\%%b" (
FOR %%c IN ("%%~a\%%b") DO (ECHO %%~c IN PATH dated %%~tc %%~zc bytes)
)
)
)
DEL "%tempfilename%" 2>nul
GOTO :EOF
:getpath
ECHO .
ECHO %path:;=&ECHO(%
GOTO :EOF
这应该可以找到可通过 path
.
访问的 java.exe 和 java.dll 的实例
它把路径和.
一起列成一个临时文件,然后用那个文件作为目录列表来搜索目标文件。
如果找到任何文件,它会显示找到的文件的大小、日期和位置。
如果 "size" 为零,则找到的目标很可能是符号 link。
例如,有时当我在 CMD 中键入命令时,它会抛出错误。
我电脑里有那么多版本的java(没有全部是我自己安装的,有些软件的目录里会有一个小java。)
我知道问题的主要原因是PATH环境不正确,但是PATH环境包含这么多目录,(是的,我可以通过将它们一一排除来找出错误。)但我只是想知道是否有办法找出命令的图像路径?
@ECHO Off
SETLOCAL
SET "tempfilename=%temp%\temp###.###"
(CALL :getpath)>"%tempfilename%"
FOR /f "usebackqdelims=" %%a IN ("%tempfilename%") DO (
IF NOT EXIST "%%~a\." (ECHO "%%~a" IN PATH but missing) ELSE (
FOR %%b IN (java.exe java.dll) DO IF EXIST "%%~a\%%b" (
FOR %%c IN ("%%~a\%%b") DO (ECHO %%~c IN PATH dated %%~tc %%~zc bytes)
)
)
)
DEL "%tempfilename%" 2>nul
GOTO :EOF
:getpath
ECHO .
ECHO %path:;=&ECHO(%
GOTO :EOF
这应该可以找到可通过 path
.
它把路径和.
一起列成一个临时文件,然后用那个文件作为目录列表来搜索目标文件。
如果找到任何文件,它会显示找到的文件的大小、日期和位置。
如果 "size" 为零,则找到的目标很可能是符号 link。