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

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

我从供应商那里获得了一个批处理文件,用于修补 Vista 计算机上的某些软件。我将使用 GPO 将其作为启动脚本推出。

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

我想在脚本的开头添加代码来查找 exe 是否存在,然后提取右键单击 exe、详细信息选项卡、“产品版本”字段时可查看的字符串。

请以评论的形式提出其他解决方案。我知道其他处理此问题的方法,并且已经准备好了几种。我愿意听取建议,但希望所有答案都针对这个特定问题。可以做到吗?如果可以,怎么做?

谢谢!-马修

答案1

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

在批处理文件中,您可能会像这样使用它:

@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 的工具和内置查找字符串 工具来确定他们当前正在运行的版本,并将其与您希望他们运行的版本进行比较
  • 第四行告诉他们,如果已经使用正确的版本,则跳过运行 Update.exe
  • 第五行运行需要修补的用户的更新
  • 最后一行是上面引用的 GOTO 点,结束批处理

答案2

你可以用 Powershell 轻松完成。例如:

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

这将检查文件版本,如果它与您想要的版本匹配,它将执行您的批处理文件。

相关内容