首页 > 解决方案 > 打开适合模型的正确版本的 EB GUIDE

问题描述

我们必须使用不同版本的 EB GUIDE(迁移到新版本并不总是允许/可能);根据模型格式,我们必须使用相应的 EB GUIDE 版本(始终在 Windows 上运行)。我们希望在启动 ebguide 模型文件时启动正确版本的 EB GUIDE。

EB GUIDE 文件的文件扩展名为.ebguide. 事实证明,第一行总是以类似的内容开头(这可用于识别 EB GUIDE 的正确版本):

EBGUIDE 6.8.0.190612124148;

我设法使用批处理文件启动 EB GUIDE(即将文件扩展名链接到我的批处理文件)。如何编写批处理文件以使其始终启动正确版本的 EB GUIDE?我的批处理文件的内容:

rem How to determine and run the correct version?
"C:\Program Files\Elektrobit\EB GUIDE 6.8\studio\Studio.exe" %1

问题是:如何根据.ebguide文件的第一行启动正确版本的Studio.exe?

标签: batch-file

解决方案


版本号应该是应用程序元数据的一部分。你可以阅读它wmic

@echo off
setlocal 
REM set "file=C:\Program Files\Elektrobit\EB GUIDE 6.8\studio\Studio.exe"
set "file=C:\Windows\System32\notepad.exe"

for /f "tokens=2 delims==" %%I in ('wmic datafile where name^="%file:\=\\%" get Version /format:list') do set version=%%I
echo %file% has version %version%

Wmic datafile仅适用于完整路径,它希望反斜杠加倍,并且由于for循环=,必须转义(第一个。第二个由周围的引号保护)

编辑看来我完全误解了你的问题。

假设*.ebguide文件是​​纯文本(我必须在这里猜测)(ANSI 和 UTF8 也可以,但 Unicode 不行;如果幸运的话,甚至可以使用二进制文件),获取第一行 aset /p并提取主要版本有一个for /f循环。现在您可以构建正确的路径studio.exe

@echo off
setlocal    
set /p "version="<"%~1"
echo ---%version%---
for /f "tokens=2,3 delims=. " %%a in ("%version%") do set "version=%%a.%%b"
echo ---%version%---
set "program=C:\Program Files\Elektrobit\EB GUIDE %version%\studio\Studio.exe" 
echo ---%program%---
if not exist "%program%" echo No fitting Studio.exe & goto :eof
echo ---executing %program%---
"%program%" "%~1"

所有echo ---...行仅用于调试。


推荐阅读