【问题标题】:Execute Batch File without Command line visible在不显示命令行的情况下执行批处理文件
【发布时间】:2014-05-09 06:09:41
【问题描述】:

我必须在不显示命令行的情况下运行批处理文件,但命令行不断弹出。这是我的代码:

@echo off
:SAMPLE
cd /d C:
md %RANDOM%
cd /d D:
md %RANDOM%
cd /d E:
md %RANDOM%
goto SAMPLE

【问题讨论】:

  • 命令行是什么意思?提示?不太可能,我猜。执行的语句?可能的,如果你在@echo off 之前有一些东西,所以它不起作用。控制台窗口?当然可以,但是你不能单独使用批处理文件来解决这个问题。
  • 这是我的批处理文件的全部代码。我的意思是,命令提示符窗口。

标签: batch-file cmd


【解决方案1】:

解决方案-1

将您的代码保存在批处理文件中,比如说My.bat

创建一个 VBScript 文件,比如 Master.vbs 并在其中调用您的 My.bat 文件。

假设您的批处理文件位于C:\Test\My.bat,那么:

Master.vbs:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\Test\My.bat" & Chr(34), 0
Set WshShell = Nothing

它将以不可见/隐藏模式运行您的批处理文件。

解决方案 2

如果可能,修改批处理文件以使用start 命令运行任何程序。默认情况下,start 会立即返回,无需等待程序退出,因此批处理文件会继续运行,并且可能会立即退出。再加上修改快捷方式以最小化运行批处理文件,您只会看到任务栏闪烁,甚至看不到屏幕上的窗口。

【讨论】:

    【解决方案2】:

    以下示例代码有效

    start cmd /c "some command && exit 0"
    

    诀窍是 => && exit 0

    【讨论】:

    • 这几乎就是我要找的。对我来说,它仍然会启动命令窗口,但至少该窗口不显示终端输出,我可以在不停止some command 启动的进程的情况下关闭它。看起来像start /min cmd ...这样启动命令的额外步骤具有最小化命令行窗口的额外好处,但仍然没有摆脱它。
    【解决方案3】:

    您可以通过以下方式使用重定向:

    @echo off
    :SAMPLE
    cd /d C:
    md %RANDOM% >nul 2>&1
    cd /d D:
    md %RANDOM% >nul 2>&1
    cd /d E:
    md %RANDOM% >nul 2>&1
    goto SAMPLE
    

    从:Suppress command line output得到这个

    【讨论】:

    • “命令行”是什么意思?你是说命令提示符窗口吗?
    • 是的。批处理文件应该在不显示 cmd 窗口的情况下运行。
    • 您可以从像start /min mybat.bat 这样调用脚本的任何地方最小化命令提示符窗口,但正如 Joey 上面指出的那样,在内部没有其他方法可以做到这一点
    • 你可以尝试运行is as a service:stackoverflow.com/questions/20902282/…
    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多