Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dll 使用bat文件创建日志_Dll_Batch File - Fatal编程技术网

Dll 使用bat文件创建日志

Dll 使用bat文件创建日志,dll,batch-file,Dll,Batch File,我试图通过检查.dll文件版本,用脚本远程监控服务器上的软件安装。我不确定是否可以这样做,但在所有服务器上安装后,我希望运行一个bat文件来查看所有服务器,并创建一个带有服务器名称和.dll文件版本号的日志文件。建议会很好。谢谢。首先从这里下载STRINGS.EXE(处理unicode)。 这是一个我已经用了很长时间的小东西。它比你要求的要多一些,但也许其他人更愿意拥有这一切。您可以轻松删除不需要的部分。根据需要添加/删除文件类型,并删除不需要的输出部分。它并不完全符合你的要求,但困难的部分已

我试图通过检查.dll文件版本,用脚本远程监控服务器上的软件安装。我不确定是否可以这样做,但在所有服务器上安装后,我希望运行一个bat文件来查看所有服务器,并创建一个带有服务器名称和.dll文件版本号的日志文件。建议会很好。谢谢。

首先从这里下载STRINGS.EXE(处理unicode)。

这是一个我已经用了很长时间的小东西。它比你要求的要多一些,但也许其他人更愿意拥有这一切。您可以轻松删除不需要的部分。根据需要添加/删除文件类型,并删除不需要的输出部分。它并不完全符合你的要求,但困难的部分已经完成,你可以根据自己的意愿进行调整。将代码另存为FileVersions.bat(或其他格式)。将此bat文件和下载的STRINGS.EXE放在同一文件夹中。执行此bat文件以获取FileVersions.txt(或任何您命名的bat文件)中的输出。它看起来像这样。获取当前文件夹下文件夹中所有指定文件类型的版本。根据您的需要修改此文件,然后根据需要处理多台机器

=======输出============ *.dll*.ocx*.exe文件的版本-Thu 08/08/2013 21:13:28.17

File=C:\Drivers\storage\strings.exe
FileDesc=strings
FileVer=2.41
ProductName=Sysinternals Strings
ProductVer=2.41

File=C:\Drivers\storage\R159108\TEACico2.dll
FileDesc=TEACico2.DLL
FileVer=1, 1, 0, 0
ProductName= TEACico2 DLL
ProductVer=1, 1, 0, 0
=======输出结束============

@ECHO OFF
TITLE %~n0
PUSHD %~dp0
SET FileTypes=*.dll *.ocx *.exe
SET OutFile=%~n0.txt
IF EXIST %OutFile% DEL /q %OutFile%
ECHO.Retrieving file versions for %FileTypes% files
ECHO.
ECHO.Versions for %FileTypes% files - %Date% %Time% > %OutFile%
ECHO.
FOR /R "%CD%" %%A IN (%FileTypes%) DO ECHO.%%A & CALL :FileVersion "%%A" >> %OutFile%
ECHO.
ECHO.Results are in %OutFile%
pause
GOTO :eof

REM ========================= Subroutines =========================
:FileVersion
SETLOCAL
ECHO.
ECHO.File=%~1

SET LineNum=Invalid
FOR /F "tokens=1 delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^|  FIND /I "FileDescription"') DO SET LineNum=%%A
IF %LineNum%==Invalid GOTO :FileVer
SET /A LineNum += 1
FOR /F "tokens=1* delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^| FIND "[%LineNum%]"') DO SET FileDesc=%%B
IF NOT "%FileDesc%"=="FileVersion" SET FileDesc

:FileVer
SET LineNum=Invalid
FOR /F "tokens=1 delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^| FIND /I "FileVersion"') DO SET LineNum=%%A
IF %LineNum%==Invalid GOTO :ProductName
SET /A LineNum += 1
FOR /F "tokens=1* delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^| FIND "[%LineNum%]"') DO SET FileVer=%%B
SET FileVer

:ProductName
SET LineNum=Invalid
FOR /F "tokens=1 delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^| FIND /I "ProductName"') DO SET LineNum=%%A
IF %LineNum%==Invalid GOTO :ProductVer
SET /A LineNum += 1
FOR /F "tokens=1* delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^| FIND "[%LineNum%]"') DO SET ProductName=%%B
IF NOT "%ProductName%"=="ProductVersion" SET ProductName

:ProductVer
SET LineNum=Invalid
FOR /F "tokens=1 delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^| FIND /I "ProductVersion"') DO SET LineNum=%%A
IF %LineNum%==Invalid GOTO :Done
SET /A LineNum += 1
FOR /F "tokens=1* delims=[]" %%A IN ('STRINGS %1 ^| FIND /N /V "" ^| FIND "[%LineNum%]"') DO SET ProductVer=%%B
SET ProductVer

:Done
ENDLOCAL
GOTO:EOF

我有一个.dll文件,在软件更新时更新。我希望能够查看这个文件,并编写一个已编译的日志文件,显示我们所有的服务器以及它们的文件版本。我曾考虑使用bat文件,但对编写它们不太熟悉,不知道从哪里开始。