在后台运行批处理文件

时间:2011-01-12 07:56:45

标签: batch-file

我有一个批处理文件,这个批处理文件不会自动启动,只有在我双击它时才会运行 我双击时可以在后台运行批处理文件。

4 个答案:

答案 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

希望这有帮助。