Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows schtasks-在计算机上运行最小化批处理文件任务_Windows_Batch File_Scheduled Tasks - Fatal编程技术网

Windows schtasks-在计算机上运行最小化批处理文件任务

Windows schtasks-在计算机上运行最小化批处理文件任务,windows,batch-file,scheduled-tasks,Windows,Batch File,Scheduled Tasks,我有一组windows虚拟机,在这些虚拟机中,我每分钟都使用任务计划程序(schtasks.exe)运行一个任务 有一个创建任务的批处理文件,如下所示: SCHTASKS.EXE /Delete /TN "my_server" /F SCHTASKS.EXE /CREATE /SC MINUTE /MO 1 /TN "my_server" /TR X:\mydrive\server.bat /RU %computername%\<username> SCHTASKS.EXE /R

我有一组windows虚拟机,在这些虚拟机中,我每分钟都使用任务计划程序(schtasks.exe)运行一个任务

有一个创建任务的批处理文件,如下所示:

SCHTASKS.EXE /Delete /TN "my_server" /F

SCHTASKS.EXE /CREATE /SC MINUTE /MO 1 /TN "my_server" /TR X:\mydrive\server.bat /RU %computername%\<username>

SCHTASKS.EXE /RUN /TN "my_server"

但这对我不起作用,不知道为什么。它没有报告任何错误,我可以在命令提示符下看到“任务已成功创建,尝试运行任务”,它计划了任务,但没有启动任务。

我认为您无法在计划任务下完成此任务。然而,还有其他方法

一种方法是创建一个可执行(exe)程序,将批处理文件作为子进程运行,然后让exe没有窗口或将窗口置于屏幕之外。这类似于创建批处理文件的快捷方式,并将“布局”选项卡下快捷方式的“窗口位置”属性更改为50005000。这种方式可以工作,但它确实会在任务栏中放置一个图标,在运行后该图标会消失。很遗憾,您无法从计划任务运行该快捷方式。当尝试从任务管理器运行批处理文件时,请注意,该任务正在作为taskeng(任务引擎)的子进程运行,并且正是该进程控制cmd.exe实例。我不知道,但我怀疑taskeng读取快捷方式并执行其内容,而不是让cmd直接处理快捷方式

如果您有某种类型的编译器,则可以使用Windows shell创建一个exe,在隐藏或最小化的窗口中运行批处理文件。在最小化的窗口中,您仍然会看到任务栏图标。使用隐藏窗口,您既不会看到cmd窗口,也不会看到任务栏图标。我还听说你也可以用VBS脚本来实现这一点

我有一个任务,客户希望动态创建批处理文件,运行它,并立即删除批处理文件,这样用户就不会篡改它。您也可以使用exe来执行此操作

还有一种方法可以通过制作安装程序的INNO Setup来实现。将批处理文件包括在安装中,运行批处理文件,然后删除批处理文件。INNO有一个命令行开关/VeryQuiet,可与生成的exe一起使用,以隐藏用户界面窗口。这可以在计划任务中使用

关于Vista及更高版本下的计划任务的几个注意事项:如果选择“无论用户是否登录都运行”,该任务将使用S4U身份验证,因此批处理文件将无法访问任何网络资源,如映射驱动器或UNC路径。如果您使用选择“使用最高权限”,它将在安装Windows时创建的内置管理员帐户下运行。这不会将给定用户提升为具有管理员组权限,而是具有单独安全令牌的实际单独用户帐户。因此,它不会看到任何用户的资源,如映射驱动器,它也将使用S4U自动显示,因此也不会有其他网络访问

还有Windows AT.exe实用程序。键入AT/?在命令提示下。AT命令设置没有用户界面的任务。查看它是否在给定时间运行的唯一方法是通过任务管理器,因为没有窗口或任务栏图标。缺点是它每天只记录一个任务。因此,您必须设置一种创建批处理文件的方法,以便在希望运行的时间段内为一天中的每一分钟创建任务,例如

AT 08:00 SomeBatchFile.bat
AT 08:01 SomeBatchFile.bat
AT 08:02 SomeBatchFile.bat
.
.
.
我很确定它需要一个登录的用户,所以当没有人登录时它就不能运行。然而,我没有对此进行测试。从你的帖子中不清楚你在计划任务中需要什么样的安全性。在登录用户下运行也将启用网络资源访问

我确实测试了这些任务是否能够在重新启动后存活。它们确实存在,因此它们将在重新启动后出现。你只能用手把它们扔掉

AT <Task#> /DELETE
AT/DELETE
我不知道它们是否能在虚拟机中工作


我不知道AT命令使用了哪些资源,但如果您要运行1440个实例24小时或720个实例12小时,可能会使系统陷入困境。

尝试通过
/TR X:\mydrive\server.bat更改
/TR start/min”“cmd/C”X:\mydrive\server.bat
或在管理控制台中打开任务并检查
运行用户是否已登录
@elzooilogico我尝试了以下方法:SCHTASKS.EXE/CREATE/SC MINUTE/MO 1/TN“my_server”/TR start/min“cmd/C”X:\mydrive\server.bat”/RU%computername%\并得到了以下错误:错误:无效参数/选项-“/min”。键入“SCHTASKS/CREATE/?”了解用法。
/TR“start/min”cmd/C“X:\mydrive\server.bat”
/TR“start/min cmd/C^”X:\mydrive\server.bat^“
/TR“start/min cmd/C\”X:\mydrive\server.bat\
都报告了相同的错误-错误:无效参数/选项-'cmd'。SCHTASKS.EXE/CREATE/SC MINUTE/MO 1/TN“我的服务器”/TR“start/min”“cmd/C”X:\mydrive\server.bat”“/RU%computername%\和您的第二个方法SCHTASKS.EXE/CREATE/SC MINUTE/MO 1/TN“我的服务器”/TR“start/min^”^“cmd/C^”X:\mydrive\server.bat”“/RU%computername%\
/TR“start/min”“cmd/C”X:\mydrive\server.bat“
<代码>开始/min“cmd/c”X:\mydrive\server1.bat“
并将实际代码写入新文件
AT <Task#> /DELETE