【问题标题】:tasklist.exe, Win Server 2008 R2, file name has spacestasklist.exe,Win Server 2008 R2,文件名有空格
【发布时间】:2015-10-21 03:47:46
【问题描述】:

我有一个客户端在 Windows Server 2008 R2 上运行 Apple 的 FileMaker Pro Advanced。关联的可执行文件是“FileMaker Pro Advanced.exe”(注意空格)。我的客户在关闭 FileMaker 时遇到了问题;一个解决方案的一部分是编写一个批处理文件,每 15 分钟运行一次,如果 FileMaker 没有运行,它将启动它。我正在帮助处理批处理文件。

我基于此提出了代码:

set target=FileMaker Pro Advance.exe
set startWith=(batch file that starts FileMaker)
tasklist /FI "IMAGENAME eq '%target%’" /NH 2>NUL | find /I "%target%">NUL
if "%ERRORLEVEL%"=="1" %startWith%
if "%ERRORLEVEL%"=="0" goto :EOF

请注意:tasklist 命令行的设计需要使用一组引号;我对那些使用了双引号。文件名中存在空格似乎需要另一组引号;我在上面使用了单引号。

我的技术不行;我收到一条关于格式不正确的命令的错误消息。叹息。

有人有解决方法吗?

如果没有更好的建议,我会要求系统管理员让我将该文件重命名为“FileMakerProAdvanced.exe”之类的名称;那应该工作。我只会在我要求的一定时间内获得该许可。如果他们拒绝我的请求,我需要其他东西。

(眼尖的你会注意到文件名有 26 个字符长。似乎 tasklist 有 25 个字符的限制。我可以解决这个问题(在 find 命令,例如)通过搜索“FileMaker Pro Advanced.ex”;这就是 tasklist 提供 find 的全部内容。我可以在 find 中使用双引号 命令。)

提前感谢您的解决方案和同情。

【问题讨论】:

    标签: batch-file windows-server-2008-r2


    【解决方案1】:

    图像名称过滤器中的空格不会有任何问题,因此无需解决方法,只需删除内部单引号

    set "target=FileMaker Pro Advance.exe"
    tasklist /fi "imagename eq %target%"
    

    输出长度的问题只是列模式。您可以更改为 csv 输出格式

    tasklist /fi "imagenane eq %target%" /nh /fo:csv | find /i "%target%" >nul
    

    或者,由于您没有从输出中检索任何数据,而不是隐藏标头,因为它们仅在找到匹配进程时才存在,请检查标头是否存在

    tasklist /fi "imagenane eq %target%" | find "========" >nul
    

    【讨论】:

    • 一个出色的反应。及时(一个小时!)措辞好。给了我们新的思考。你的建议奏效了。谢谢你。好多次了。我们非常感谢您花时间做出回应。 [编辑拼写]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    相关资源
    最近更新 更多