ディレクトリ内のDLLを再帰的にスキャンし、それらのすべてのバージョン番号のレポートを生成できるスクリプトを作成したいと思います。
スクリプトを使用してDLLのバージョン番号を検出するにはどうすればよいですか?より良い方法がない限り、VBScriptソリューションが推奨されます。
オブジェクトを使用FileSystemObject
してファイルシステムとそのGetFileVersion
メソッドにアクセスし、ファイルバージョン情報を取得できます。
あなたはVBScriptの例を求めたので、ここにあります:
Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")
PrintDLLVersions oFSO.GetFolder(WScript.Arguments.Item(0))
Sub PrintDLLVersions(Folder)
Dim oFile, oSubFolder
' Scan the DLLs in the Folder
For Each oFile In Folder.Files
If UCase(oFSO.GetExtensionName(oFile)) = "DLL" Then
WScript.Echo oFile.Path & vbTab & oFSO.GetFileVersion(oFile)
End If
Next
' Scan the Folder's subfolders
For Each oSubFolder In Folder.SubFolders
PrintDLLVersions oSubFolder
Next
End Sub
使用法:
> cscript// nologoscript-file.vbs フォルダー> out-file
例えば:
> cscript //nologo dll-list.vbs C:\ Dir> dll-list.txt
サンプル出力:
C:\ Dir \ foo.dll 1.0.0.1 C:\ Dir \ bar.dll 1.1.0.0 C:\ Dir \ SubDir \ foobar.dll 4.2.0.0 ..。
編集私はこれが私が参照したソースだと思います
これは私が使用しているスクリプトです。申し訳ありませんが、どこからか思い出せません。(つまり、読者、これがスクリプトとして開始された場合は、前に進んでください)バージョンを直接取得できるFileSystemObjectを使用します。
@echo off
setlocal
set vbs="%temp%\filever.vbs"
set file=%1
echo Set oFSO = CreateObject("Scripting.FileSystemObject") >%vbs%
echo WScript.Echo oFSO.GetFileVersion(WScript.Arguments.Item(0)) >>%vbs%
for /f "tokens=*" %%a in (
'cscript.exe //Nologo %vbs% %file%') do set filever=%%a
del %vbs%
echo Full file version of %file% is: %filever%
for /f "tokens=2 delims=. " %%a in ("%filever%") do set secondparam=%%a
set splevel=%secondparam:~0,1%
echo SP level is: %splevel%
endlocal
pause