Windows上的任务列表是否可以读取set生成的变量?

时间:2019-04-27 12:56:51

标签: batch-file tasklist

我正在尝试创建一个,它会在运行其他内容之前检查我的mysql server是否已启动并正在运行。我正在尝试通过读取.pid文件({set到变量%pid%),然后要求进行检查来做到这一点。

问题在于tasklist似乎不喜欢%符号,因此这样做有点困难。每次尝试执行此操作都会得到:

  

ERROR: The search filter cannot be recognized.

我认为您无法以其他任何方式读取变量,但是我对批处理脚本还比较陌生,所以我可能是错的。

这里有一个脚本副本:

set pid=C:\mysql\data\DESKTOP-MG3L38L.pid
rem making sure the pid var exists
type %pid%
tasklist /fi 'pid eq %pid%

1 个答案:

答案 0 :(得分:0)

您真正的问题是,您没有Set将变量设置为文件第一行的内容;您Set将其设置为文件名。

要将其设置为文件第一行的内容,您将使用:

@Set /P "PID="<"C:\mysql\data\DESKTOP-MG3L38L.pid"

因为您没有正确设置它,所以TaskList试图过滤文件名C:\mysql\data\DESKTOP-MG3L38L.pid作为数字整数序列,显然会失败。

一旦解决,您就可以运行TaskList命令:

@TaskList /Fi "PID Eq %PID%" /Fi "Status Eq Running"