如何通过批处理运行ipconfig⼀all指令,同时导出windows已安装程序列表,保存文本名为计算机名.log

2025-02-22 12:27:59
推荐回答(1个)
回答1:

在回答之前,还是提醒一下,如果是用来写恶意程序的话,还是请注意下!

第一步,完善上面导出代码:

将上面的:
set RF="%~dpn0.txt"
改为:
set RF="%computername%.log"
保存文件名为“计算机名.log”

第二步,增加功能

修改:
::64位系统的32位子系统
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
  set RKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
  echo [32 bit SoftWares]>>%RF%
  call :GetIt
  echo.>>%RF%
)
为:
::64位系统的32位子系统
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
  set RKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
  echo [32 bit SoftWares]>>%RF%
  call :GetIt
  echo.>>%RF%
  echo.试试>>%RF%
  ipconfig /all >>%RF%
)

这样就会将ipconfig /all代码写到输出内容中部,以下是完整代码,我已经测试过,有问题请追问,没问题请采纳:

@echo off
setlocal ENABLEDELAYEDEXPANSION
pushd %~dp0

::-code-::
::By lifenjoiner
set RF="%computername%.log"
cd.>%RF%
::64位系统的32位子系统
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
  set RKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
  echo [32 bit SoftWares]>>%RF%
  call :GetIt
  echo.>>%RF%
  echo.【IP相关信息:】>>%RF%
  ipconfig /all >>%RF%
)
::主系统
set RKey=HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
  echo [64 bit SoftWares]>>%RF%
) else (
  echo [32 bit SoftWares]>>%RF%
)
call :GetIt

set RKey=
set RF=
::-code-::

:Exit
popd
endlocal
exit /b

:GetIt
for /f "usebackq eol=! delims=" %%i in (`reg query %RKey%`) do (
  set iKey=%%i
  set iKey=!iKey:%RKey%\=!
  echo !iKey!
  for /f "usebackq eol=! delims=" %%I in (`"reg query %RKey%\!iKey! /v DisplayName 2>nul"`) do (
    set iName=%%I
    set iName=!iName:%RKey%\=!
    set iName=!iName:DisplayName=%!
    set iName=!iName:REG_SZ=%!
    echo !iName!>>%RF%
    set iName=
  )
  set iKey=
)
exit /b