Ren*_*ger 10 windows command-line which
有没有办法快速确定二进制文件(%PATH%变量指向的)的位置。
这相当于which perl在传统的 unix shell 中执行的操作。
我知道资源工具包有一个where命令,但是我的(公司)计算机上没有安装这个工具包,所以我不能使用where.
MBu*_*MBu 14
一个 cmd.exe 单行为which:
for %G in (<binary.exe>) do @echo.%~$PATH:G
Run Code Online (Sandbox Code Playgroud)
您可以将其编码为一个简单的 which.bat:
@echo off
for %%G in (%1) do @echo.%%~$PATH:G
Run Code Online (Sandbox Code Playgroud)
编辑:它需要二进制的全名: which perl.exe,而不是which perl. 可以编写一个将 %PATHEXT% 考虑在内的批处理文件,因此它不需要二进制文件的全名。如果您需要,请告诉我。
EDIT2:无论如何我决定编写批处理文件。这里是:
@echo off
setlocal enabledelayedexpansion
set ext= ;%PATHEXT%
:extloop1
for /f "delims=; tokens=1,*" %%A in ("!ext!") do (
if exist %1%%A (
echo .\%1%%A
goto finish
)
set ext=%%B
)
if "!ext!" neq "" goto extloop1
set ext= ;%PATHEXT%
:extloop2
for /f "delims=; tokens=1,*" %%A in ("!ext!") do (
for %%C in (%1%%A) do (
if exist %%~$PATH:C (
echo %%~$PATH:C
goto finish
)
)
set ext=%%B
)
if "!ext!" neq "" goto extloop2
:finish
endlocal
Run Code Online (Sandbox Code Playgroud)
首先,根据 Bob 的建议,它会检查当前目录中是否存在二进制文件。如果未找到二进制文件,则执行另一个循环,通过 %PATH% 变量进行搜索。
循环基于if ... goto,for命令仅用于将ext值拆分为';' 特点。的值%PATHEXT%都-与空的扩展,它允许用于搜索完全名为二进制前缀which perl和which perl.exe作品。
| 归档时间: |
|
| 查看次数: |
6752 次 |
| 最近记录: |