Batch file 在命令行不可见的情况下执行批处理文件

Batch file 在命令行不可见的情况下执行批处理文件,batch-file,cmd,Batch File,Cmd,我必须在不显示命令行的情况下运行批处理文件,但命令行会不断弹出。这是我的代码: @echo off :SAMPLE cd /d C: md %RANDOM% cd /d D: md %RANDOM% cd /d E: md %RANDOM% goto SAMPLE 解决方案-1: 将代码保存在批处理文件中,比如说My.bat 创建一个VBScript文件,比如说Master.vbs,并调用其中的My.bat文件 假设批处理文件位于C:\Test\My.bat Master.vbs: Set W

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

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

解决方案-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
会立即返回,而无需等待程序退出,因此批处理文件将继续运行,并且可能会立即退出。再加上修改快捷方式以最小化批处理文件,您将只看到任务栏闪烁,甚至看不到屏幕上的窗口。

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

@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

从以下示例代码中获得:

以下示例代码有效

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

诀窍是=>&退出0

使用命令行意味着什么?提示?我想不太可能。执行的语句?如果您在
@echo off
之前有某些内容导致它无法工作,则可能是这样。控制台窗口?当然,但是你不能单独用批处理文件来解决这个问题。这就是我批处理文件的全部代码。我的意思是,命令提示符窗口。可能与您所说的“命令行”重复?你是说命令提示窗口吗?是的。批处理文件应该在不显示cmd窗口的情况下运行。您可以从调用脚本的任何地方最小化命令提示窗口,例如
start/min mybat.bat
,但是正如Joey在上面指出的,没有其他方法可以在内部执行。您可以尝试将其作为服务运行:这几乎就是我正在寻找的。对我来说,它仍然会启动命令窗口,但至少该窗口不会显示终端输出,我可以在不停止某个命令启动的过程的情况下关闭它。这看起来像是额外启动命令的步骤,比如
start/min cmd…
有一个额外的好处,那就是一开始就最小化了命令行窗口,但仍然无法摆脱它。