检查批处理脚本中的文件属性?

我有一个供应商的batch file来修补Vista机器上的一些软件。 我将要使用GPO将其作为启动脚本推出。

我的问题是一些系统需要这个软件,有些则不需要。

我想添加代码到脚本的开始寻找一个EXE的存在,并拉如果你右键单击EXE,详细信息选项卡,“产品版本”字段可查看的string。

请提出其他解决scheme作为意见。 我知道其他的方式来处理这个问题,并有一对夫妇排队。 我接受build议,但宁愿所有的答案是这个具体的问题。 可以,如果是的话,怎么办?

谢谢! -Mathew

您将需要一个名为filever的实用程序,作为Windows的支持工具。 这是一个详细介绍它的选项的页面 。

在batch file中,您可能会像这样使用它:

@IF NOT EXIST C:\PATH\TO\YOUR\APP.EXE GOTO END @SET APPVER=3.14159 @\\FILESHARE\filever.exe "C:\PATH\TO\YOUR\APP.EXE" | findstr /i %APPVER% > nul @IF %ERRORLEVEL% EQU 0 GOTO END @\\FILESHARE\PATH\TO\YOUR\APP\Update.exe :END 
  • 第一行检查您的应用程序的存在。
  • 第二行设置您要修补的版本号
  • 第三行使用MS的Filever工具和内置的findstr工具来确定它们当前正在运行的版本,并将其与您希望它们运行的​​版本进行比较
  • 如果他们已经在正确的版本,第四行告诉他们跳过运行Update.exe
  • 第五行为需要修补的人员提供更新
  • 最后一行是上面引用的GOTO点,并结束批处理

你可以很容易地使用Powershell。 就像是:

 if ([System.Diagnostics.FileVersionInfo]::GetVersionInfo("PathToExe").FileVersion -eq "1.1.0.0") { .\DoPatch.bat } 

这将检查文件版本,如果它匹配您所需的版本,它会执行您的batch file。