batch-file - 打开适合模型的正确版本的 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?
解决方案
版本号应该是应用程序元数据的一部分。你可以阅读它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 ---...
行仅用于调试。
推荐阅读
- javascript - 将表单值附加到操作 url - 动态
- coq - CoqIde 关于自动战术的奇怪信息
- c# - 如何获取不包含标志
- php - 通过 curl 调用 google api url 缩短器在 php 中返回 HTTP 403 状态
- java - 将文件值读取到 Java 中的文本区域
- sockets - Flutter Dart Socket 中的 java socket.setSoLinger(true,0) 等价物是什么?
- angular - 在一个“切换”按钮中调用 2 个功能
- ruby-on-rails - 有条件地对查询结果进行排序
- svg - 如何用颜色填充复杂的 SVG 图像?
- c - C中的函数前缀与“函数结构”