windows - 如何在 Windows 批处理文件中使用 WMIC 将 DLL 或 EXE 的文件版本获取到变量?
问题描述
我尝试使用 Windows 批处理文件获取文件版本。此命令成功将版本打印到控制台。
WMIC DATAFILE WHERE name="Z:\\bin\\My_project.dll" get Version /format:Textvaluelist
但是当我尝试使用以下方法将此输出传递给变量时,Windows 命令处理器会输出:
Z:\\bin\\My_project.dll - 无效的别名动词。
这个命令行有什么问题?
for /f %%a in ('WMIC DATAFILE WHERE name="Z:\\bin\\My_project.dll" get Version /format:Textvaluelist') do set val=%%a
解决方案
这就是我尝试使用此任务的方式WMIC
:
For /F "Tokens=1* Delims==" %%A In (
'WMIC DataFile Where "Name='Z:\\bin\\My_project.dll'" Get Version /Value 2^>Nul'
) Do For /F "Tokens=*" %%C In ("%%B") Do Set "val=%%C"
第二个For
循环旨在克服由 unicodeWMIC
结果导致的不需要的输出。
编辑
如果WMIC
没有规定,您可以VBScript
从批处理文件中使用:
使用 Windows 脚本宿主:
<!-- :
@Echo Off
For /F %%A In ('CScript //NoLogo "%~f0?.wsf"') Do Set "val=%%A"
Set val 2>Nul
Pause
Exit /B
-->
<Job><Script Language="VBScript">
WScript.Echo CreateObject("Scripting.FileSystemObject").GetFileVersion("Z:\bin\My_project.dll")
</Script></Job>
或通过mshta.exe
:
@Echo Off
For /F %%A In ('
MsHTA VBScript:Execute("Set o=CreateObject(""Scripting.FileSystemObject""):o.GetStandardStream(1).Write(o.GetFileVersion(""Z:\bin\My_project.dll"")):Close"^)
') Do Set "val=%%A"
Set val 2>Nul
Pause
推荐阅读
- ios - 如何在模拟器或真机上安装 ipa 文件?
- java - Spring Data JPA - 使用现有的嵌套子对象持久化新对象
- node.js - 从 aws lambda 调用外部 API 并在 lambda 函数中将响应作为回调
- ios - 是否可以向 IOS 控制中心添加自定义应用程序?
- node.js - 如何将图像和文件上传到 Azure Blob Node.js
- thingsboard - Thingsboard 服务在 Windows 上停止
- python - 如何在 for 循环中使用 try/except 选择 cross_val_predict 方法?
- css - 使用 Quill 富编辑器的最大高度
- java - 为什么这个吐司不应该出现?
- oracle - 如何在减号 sql 中标记我的数据是旧的还是新的