الكشف عن رقم إصدار DLL باستخدام برنامج نصي
سؤال
أرغب في كتابة برنامج نصي يمكنه فحص ملفات 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
لا تنتمي إلى StackOverflow