加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 使用批处理文件复制命令提示符

发布时间:2020-12-14 02:49:52 所属栏目:Windows 来源:网络整理
导读:我试图使用批处理文件复制命令提示符.我目前的代码转载如下. @echo offtitle Command Prompt:LOOPset /p COMMAND="%CD%"title Command Prompt - %COMMAND%call %COMMAND%echo.title Command Promptgoto LOOP 但是,我有一个问题.如果我正在调用程序(例如gpedi
我试图使用批处理文件复制命令提示符.我目前的代码转载如下.

@echo off
title Command Prompt
:LOOP
set /p COMMAND="%CD%>"
title Command Prompt - %COMMAND%
call %COMMAND%
echo.
title Command Prompt
goto LOOP

但是,我有一个问题.如果我正在调用程序(例如gpedit.msc),则批处理文件将等待程序返回,然后继续执行,此时正常的命令提示符返回而不等待程序返回.

如何测试命令是否是程序,所以我可以使用start命令?

解决方法

您可以在可执行文件中搜索user32.dll.

@echo off
title Command Prompt
:LOOP
    set /p COMMAND="%CD%>"
    title Command Prompt - %COMMAND%

    call :is_gui %COMMAND%
    if errorlevel 1 (
        call %COMMAND%
    ) else (
        start "" %COMMAND%
    )

    echo.
    title Command Prompt
    goto LOOP

:is_gui app_name
    set app_name=%~1
    set file_app=

    rem Get path of application
    if exist "%app_name%" (
        set file_app=%app_name%
    ) else (
        rem Lookup path of app
        for %%P in (%PATHEXT%) do (
          for %%I in (%1 %1%%P) do (
            if exist "%%~$PATH:I" (
              set file_app=%%~$PATH:I
              goto continue
            )
          )
        )
    )
    :continue
    if "%file_app%"=="" exit /b 1
    find /i "user32.dll" < "%file_app%" >nul 2>&1
    exit /b %errorlevel%

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读