Batch file 使用批处理列出任何环境路径中的所有可执行文件
有没有一种方法可以通过批处理文件列出当前路径(环境变量)设置可用的所有可执行文件 我已经尝试了一段时间,但我似乎找不到一个办法(我不是批处理知识分子) 请帮助,如果你可以,甚至一个链接到一篇文章可以是有用的。 谢谢大家! 非常简单:Batch file 使用批处理列出任何环境路径中的所有可执行文件,batch-file,cmd,environment-variables,command-prompt,Batch File,Cmd,Environment Variables,Command Prompt,有没有一种方法可以通过批处理文件列出当前路径(环境变量)设置可用的所有可执行文件 我已经尝试了一段时间,但我似乎找不到一个办法(我不是批处理知识分子) 请帮助,如果你可以,甚至一个链接到一篇文章可以是有用的。 谢谢大家! 非常简单: for %a in (%pathext%) do where *%a %pathext%列出了所有已定义的可执行文件扩展名(.exe、.bat、…),其中列出了%path% 注意:这是命令行语法。要在批处理文件中使用,请使用%%a而不是%a作为已提供答案的补充,并
for %a in (%pathext%) do where *%a
%pathext%
列出了所有已定义的可执行文件扩展名(.exe、.bat、…),其中
列出了%path%
注意:这是命令行语法。要在批处理文件中使用,请使用
%%a
而不是%a
作为已提供答案的补充,并且由于@aschipfl的注释,以下内容应仅使用%Path%
环境变量中定义的位置,而不包括当前目录,(除非它本身在%Path%
中)
在命令提示下:
对于(%PathExt%)中的%A执行@Where$Path:%A 2>Nul
并从批处理文件:
@echo off
setlocal DisableDelayedExpansion
for %%D in ("%PATH:;=";"%") do (
for /F "eol=* delims=" %%F in ('cd /d "%%~D" 2^>nul ^&^& dir /b/a-d %PATHEXT:.=*.% 2^>nul') do (
for %%F in ("%%~D\%%F") do echo %%~fF
)
)
@对于(%PathExt%)中的%%A,执行@Where$Path:%%A 2>Nul
显然,如果您只查找
.exe
文件,而不是可执行文件,则会简单得多:
其中$Path:.exe 2>Nul
另一种选择是单独使用CMD
的本机功能,而不依赖外部可执行文件,也可以在较旧版本的windows上使用,如windows XP,其中where.exe
不可用
在批处理文件中:
@echo off
setlocal DisableDelayedExpansion
for %%D in ("%PATH:;=";"%") do (
for /F "eol=* delims=" %%F in ('cd /d "%%~D" 2^>nul ^&^& dir /b/a-d %PATHEXT:.=*.% 2^>nul') do (
for %%F in ("%%~D\%%F") do echo %%~fF
)
)
从技术上讲,的最里面的并不重要,它只是为了处理PATH
环境变量中有时可能出现的异常,比如某些PATH元素后面有反斜杠,以便以标准格式输出文件路径
由于它的长度,它不适合在命令提示符下使用,但是对于我的测试和我的确信,它比使用Where
的等效解决方案要快
一个用于命令提示的行程序(为完整起见):
在路径分隔符上拆分并迭代执行dir%path\u segment%\*.exe
Great one!注意:这也会返回当前工作目录中的所有可执行文件…@aschipfl,我想可以先创建一个随机目录,然后在该目录中制作CD。或者可以设置nodefaultcurrentDirectoryinePath
系统变量。这是甚至比公认的答案更好,因为它发出一个连续的列表,没有中断。与|find
或|findstr
相结合,这太棒了!