我有一个客户端在 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
请注意:任务列表命令行的设计需要使用一组引号;我用那些双引号。文件名中存在空格似乎需要另一组引号;我上面用过单引号。
我的技术不起作用;我收到有关格式错误的命令的错误消息。叹息。
有没有人有解决方法?
如果没有更好的建议,我会要求系统管理员让我将该文件重命名为" FileMakerProAdvanced.exe&#34 ;;应该工作。我只会在一定比例的时间内获得该许可。如果他们拒绝我的请求,我还需要别的东西。
(你们中间鹰派人士会注意到文件名长度是26个字符。似乎任务列表有25个字符的限制。我可以解决这个问题(在发现例如,通过搜索" FileMaker Pro Advanced.ex&#34 ;;所有任务列表提供查找。强大>命令。我可以在查找命令中使用双引号。)
提前感谢您提供解决方案和同意。
答案 0 :(得分:1)
图像名称过滤器中的空格不会有任何问题,因此无需解决方法,只需删除内部单引号
public static class DataRecordExtensions
{
public static bool HasColumn(this IDataRecord dr, string columnName)
{
for (int i=0; i < dr.FieldCount; i++)
{
if (dr.GetName(i).Equals(columnName, StringComparison.InvariantCultureIgnoreCase))
return true;
}
return false;
}
}
输出长度的问题仅适用于列模式。您可以更改为csv输出格式
f = lambda x: sys.stdout.write(["2\n",][2*(x==2)-2])
或者,因为您没有从输出中检索任何数据,而不是隐藏标题,因为它们仅在找到匹配的进程时才出现,请检查标题是否存在
set "target=FileMaker Pro Advance.exe"
tasklist /fi "imagename eq %target%"