سؤال

أرغب في كتابة برنامج نصي يمكنه فحص ملفات DLL الموجودة في الدليل بشكل متكرر وإنشاء تقرير بجميع أرقام الإصدارات الخاصة بها.

كيف يمكنني اكتشاف رقم إصدار DLL باستخدام برنامج نصي؟تُفضل حلول VBScript، ما لم تكن هناك طريقة أفضل.

هل كانت مفيدة؟

المحلول

ويمكنك استخدام FileSystemObject الكائن للوصول إلى نظام الملفات وفي GetFileVersion طريقة للحصول على معلومات إصدار الملف.

ولقد طلبت مثال فبسكريبت، حتى هنا كنت:

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 //nologo script-file.vbs folder > 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top