3

ディレクトリ内のDLLを再帰的にスキャンし、それらのすべてのバージョン番号のレポートを生成できるスクリプトを作成したいと思います。

スクリプトを使用してDLLのバージョン番号を検出するにはどうすればよいですか?より良い方法がない限り、VBScriptソリューションが推奨されます。

4

2 に答える 2

6

オブジェクトを使用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
..。
于 2009-09-14T18:33:58.820 に答える
2

編集私はこれが私が参照したソースだと思います

これは私が使用しているスクリプトです。申し訳ありませんが、どこからか思い出せません。(つまり、読者、これがスクリプトとして開始された場合は、前に進んでください)バージョンを直接取得できる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
于 2009-09-14T15:23:31.633 に答える