我有一个批处理文件,这个批处理文件不会自动启动,只有在我双击它时才会运行 我双击时可以在后台运行批处理文件。
答案 0 :(得分:7)
好吧,你可以用start
最小化它,如果这足够的话。真的很难隐藏它(虽然我现在可以想到一个选项)。
基本上,您需要通过双击确定批次是否已启动。您可以通过定义特殊变量并查找它来完成此操作:
@echo off
if not defined FOO (
set FOO=1
start /min "" %~0
exit /b
)
rem here whatever you wanted to do originally in the batch
只要未定义FOO
变量(这可能是几乎所有地方的默认值),此批次将再次启动自身最小化,但使用首先定义变量。环境传递给子进程,这就是为什么这样做的原因。
答案 1 :(得分:1)
你通常需要别的东西在那个庄园里运行剧本 即 创建快捷方式,并将快捷方式的“运行”字段设置为“最小化”。
答案 2 :(得分:1)
一旦你从批处理文件运行它的cmd.exe窗口中单击或标签,它就是“在后台” - 我不确定你想要什么,但听起来你可能会问如何运行批处理文件而不显示cmd.exe窗口。
如果是这样,我可以想到两种方法:首先,您可以创建批处理文件的快捷方式,右键单击它,然后在属性中设置运行最小化的快捷方式(应该是运行旁边的下拉选项) 。
您还可以使用Windows脚本宿主的shell对象(calling the Run method)将批处理文件的调用包装在VBScript文件中,以无形地运行批处理文件。传递0作为intWindowStyle参数将禁止显示窗口或任何内容。
答案 3 :(得分:1)
@Ghyath Serhal 我已经使用cmdow在另一个程序上执行此操作,它是一个可用于修改命令提示符的外部应用程序。要使用它,您需要将此代码(见下文)输入到它自己的批处理文件中,或者输入到命令提示符中,它将在其中运行带有隐藏终端窗口的“BatchFile.bat”。我还没有找到在单个批处理文件中使用它的方法,但我今天才发现这个。
Dim Up As Integer
Dim Low As Integer
If Me.Text_L = "" Or IsNull(Me.Text_L) Or Me.Text_U = "" Or IsNull(Me.Text_U) Then
MsgBox ("Please choose a valid range!")
Else
Up = Me.Text_U
Low = Me.Text_L
SQL = SQL_Origin & " WHERE [qry_View_Search].[Upper_Range] <= '" & Up & "' " _
& "AND [qry_View_Search].[Lower_Range] >= '" & Low & "';"
subform_View_Search.Form.RecordSource = SQL
subform_View_Search.Form.Requery
End If
希望这有帮助。