1

我创建了一个批处理文件,如下所示:

set VAR1=VALUE1
start another_batch_file
sleep 10
ps -l |grep abc > foo.txt

another_batch_file 将启动几个进程,我想使用 ps 列出一些特定的进程。当我从 cmd 窗口运行此脚本时,它运行良好,但如果我在任务计划程序中创建一个任务以自动调用此脚本,则 foo.txt 将为空。

我也尝试将ps -l结果输出到文件,它也是空的

ps 和 grep 都来自 MKS 工具包。

编辑:

根据评论,我尝试使用类似于以下的脚本:

set VAR1=VALUE1
start another_batch_file
sleep 10
ps > foo.txt
tasklist > bar.txt

现在 foo.txt 仍然是空的,而 bar.txt 具有包含所有进程信息的正常输出。

有人有线索吗?

编辑2:

我选中了“以最高权限运行”框,该ps命令现在运行良好。

在cmd窗口或计划任务中运行脚本时,我一直使用相同的用户帐户,虽然ps可执行文件位于映射驱动器中,但我认为这导致脚本需要更高的权限才能运行

4

2 回答 2

3

如果它在提示符下工作:任务计划程序默认在系统帐户中运行并且无权访问网络资源,并且如果您的其他批处理文件正在尝试访问它们,那么它将不会加载。

于 2013-10-21T08:15:46.350 回答
2

批处理文件并非永远不在进程列表中。批处理文件由 cmd.exe 执行,所以 cmd.exe 在列表中。

ps但是,如果您也添加一个用于显示参数的开关,您应该可以使用它来访问它。

也可以使用tasklist.

tasklist /FI "IMAGENAME eq cmd.exe" /V | grep another_batch_file

C:\Windows\system32\cmd.exe - another_batch_file.bat cmd.exe
1320 控制台 1 3.132 K 未知

于 2013-10-21T07:09:40.777 回答