中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 18:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 提取文件版本信息(版本号)
楼 主 提取文件版本信息(版本号) 发表于 2007-06-07 16:08 ·  中国 北京 联通
初级用户
积分 28
发帖 9
注册 2007-04-26 01:00
UID 86482
性别 女
状态 离线
请问:如何将windows文件夹中的文件名称和版本号用命令行提取出来,并存到一个txt文件中?文件大都是.exe,.dll格式。多谢。

不一定一定要用批处理,用其他语言也可以,能不能给出例子呢?谢谢.

[ Last edited by mandyonly on 2007-6-7 at 04:27 PM ]
2 发表于 2007-06-07 16:19 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
批处理提取版本号估计没戏,VBS以前试过可以,不过现在忘了
3 发表于 2007-06-07 16:41 ·  中国 广东 深圳 电信
新手上路
积分 19
发帖 10
注册 2007-05-31 11:23
UID 89848
性别 男
状态 离线
wmic datafile where "Name='c:\\windows\\explorer.exe'" get Manufacturer,Version,Filename
4 发表于 2007-06-07 16:47 ·  中国 北京 联通
初级用户
积分 28
发帖 9
注册 2007-04-26 01:00
UID 86482
性别 女
状态 离线
这时用什么语言写的?
5 发表于 2007-06-07 17:05 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
UID 75624
性别 男
状态 离线
wmic datafile where "Name='c:\\windows\\explorer.exe'" get Manufacturer,Version,Filename

是P啊?
6 发表于 2007-06-07 17:12 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
wmic不错
7 发表于 2007-06-07 17:13 ·  中国 北京 联通
初级用户
积分 28
发帖 9
注册 2007-04-26 01:00
UID 86482
性别 女
状态 离线
如果文件是多个,存在一个文件夹中,我要提取的是文件夹中的所有的文件名和版本,而不是5楼说的具体的一个文件名,该怎么办呢?
8 发表于 2007-06-07 17:33 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
//我要提取的是文件夹中的所有的文件名和版本

@echo off
set Target=C:\\test
cd %Target%
for %%i in (*.*) do (
rem echo %%i
wmic datafile where "Name='%Target%\\%%i'" get Manufacturer,Version,Filename
)
9 发表于 2007-06-07 18:02 ·  中国 北京 联通
初级用户
积分 28
发帖 9
注册 2007-04-26 01:00
UID 86482
性别 女
状态 离线
多谢!
10 我也来玩玩 发表于 2007-06-08 02:12 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
wmic /output:result.log datafile where "Path='\\windows\\system32\\' and Drive='C:' and (Extension='dll' or Extension='exe')" get Manufacturer,Version,Caption


运行时间可能稍长点,耐心等待。。
11 发表于 2007-06-09 22:19 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
VBS的,只提取有版本号的“应用程序”(exe)、“应用程序扩展”(dll)
Path = "C:\windows"

Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(Path)

For Each strFileName in objFolder.Items
name = objFolder.GetDetailsOf(strFileName, 0)
Extension = objFolder.GetDetailsOf(strFileName, 2)
ver = objFolder.GetDetailsOf(strFileName, 37)
If not ver = "" Then
If Extension = "应用程序" Then
str = str & name & ".exe:" & ver & vbCrLf
Else
If Extension = "应用程序扩展" Then str = str & name & ":" & ver & vbCrLf
End If
End If
Next

Set fW = fso.OpenTextFile("result.log", 2, True)
fW.WriteLine str
fW.close


所有的“应用程序”(exe)、“应用程序扩展”(dll)都提取
Path = "C:\windows"

Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(Path)

For Each strFileName in objFolder.Items
name = objFolder.GetDetailsOf(strFileName, 0)
Extension = objFolder.GetDetailsOf(strFileName, 2)
ver = objFolder.GetDetailsOf(strFileName, 37)
If Extension = "应用程序" Then
str = str & name & ".exe:" & ver & vbCrLf
Else
If Extension = "应用程序扩展" Then str = str & name & ":" & ver & vbCrLf
End If
Next

Set fW = fso.OpenTextFile("result.log", 2, True)
fW.WriteLine str
fW.close


[ Last edited by zh159 on 2007-6-9 at 10:21 PM ]
12 发表于 2007-06-10 08:07 ·  中国 北京 联通
初级用户
积分 88
发帖 41
注册 2006-03-08 17:38
UID 51603
状态 离线
哦,好东东亚。
13 发表于 2007-07-06 10:42 ·  中国 湖北 襄阳 电信
初级用户
积分 25
发帖 13
注册 2007-06-15 11:32
UID 91401
性别 男
状态 离线
要这么麻烦吗?
用"filever /v filename" 命令就可以得到一个文件的版本信息.
14 发表于 2007-07-06 10:46 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
filever 是个三方工具?
15 发表于 2007-07-06 11:57 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
Originally posted by wbshu at 2007-7-6 10:42:
要这么麻烦吗?
用"filever /v filename" 命令就可以得到一个文件的版本信息.

C:\>filever/?
'filever' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
论坛跳转: