gpt4 book ai didi

windows - 检查命令是否在CMD中是内部的

转载 作者:可可西里 更新时间:2023-11-01 13:51:09 25 4
gpt4 key购买 nike

我有一个命令的名称,我需要检查这个命令是否是内部命令。如何在批处理脚本中执行此操作?

最佳答案

经过大量调整,并感谢@Andriy M 的帮助,它终于成功了。

@ECHO off

CALL :isInternalCommand dir dirInternal
ECHO is dir internal: %dirInternal%

CALL :isInternalCommand find findInternal
ECHO is find internal: %findInternal%

exit /b 0

:isInternalCommand
SETLOCAL

MKDIR %TEMP%\EMPTY_DIR_FOR_TEST > NUL 2>& 1
CD /D %TEMP%\EMPTY_DIR_FOR_TEST
SET PATH=
%~1 /? > NUL 2>&1
IF ERRORLEVEL 9009 (ENDLOCAL
SET "%~2=no"
) ELSE (ENDLOCAL
SET "%~2=yes"
)

GOTO :EOF

旧的解决方案

您可以使用where。如果失败,则该命令可能是内部命令。如果成功,您将获得证明它不是内部的可执行路径。

C:\Users\user>where path
INFO: Could not find files for the given pattern(s).

C:\Users\user>where find
C:\Windows\System32\find.exe

编辑:正如评论所暗示的那样,如果您正在寻找可移植性而不仅仅是研究,这可能不是最佳解决方案。所以这是另一种可能的解决方案。

%PATH% 设置为空,这样 HELP 就找不到任何东西,然后在您要检查的命令上运行 HELP .

C:\Users\user>set PATH=

C:\Users\user>path
PATH=(null)

C:\Users\user>%WINDIR%\System32\help del
Deletes one or more files.

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
[...]

C:\Users\user>%WINDIR%\System32\help find
'find' is not recognized as an internal or external command,
operable program or batch file.

如果命令没有帮助,这可能仍然会失败。

编辑 2: 没关系,这也行不通。两种情况都返回 %ERRORLEVEL%=1

关于windows - 检查命令是否在CMD中是内部的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com