无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6109|回复: 13
打印 上一主题 下一主题

[求助] 我想把批处理输出的结果在当前目录下保存为一个TXT文件,请问各位大侠如何实现啊!

[复制链接]
跳转到指定楼层
1#
发表于 2021-5-25 14:40:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
@echo off & color a & title 获取系统信息 ^& By 繁华背后的落寞
setlocal enabledelayedexpansion
Rem 获取系统版本
for /f "delims=" %%a in ('wmic process get^|findstr /i "Microsoft Windows"') do (
set /a a+=1
if !a!==2 (set var=%%a&goto st)
)
:st
for /f "delims=|" %%b in ("!var!") do (
for /f "tokens=19-21" %%i in ("%%b") do (
if "%PROCESSOR_ARCHITECTURE%"=="x86" set var=32位
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set var=64位
echo 操作系统:%%i %%j %%k !var!
)
)
set var=<nul
echo 当前计算机名:%computername%
echo 当前登陆用户名:%username%

Rem 获取IP地址
for /f "delims=" %%a in ('wmic nicconfig get IPAddress /value ^| findstr /i "IPAddress={"') do (
set var=%%a
for /f tokens^=2^ delims^=^"^" %%b in ("!var!") do (
echo IP地址:%%b
)
)

Rem 获取MAC地址
for /f "skip=3 tokens=1" %%a in ('getmac') do (
echo MAC地址:%%a
goto mac
)
:mac

Rem 获取主板型号
for /f "delims=" %%a in ('wmic BASEBOARD get Manufacturer^,Product^,Version^,SerialNumber /value^|findstr /i "product"') do (
set a=%%a
set a=!a:~0,8!#!a:~8!
set a=!a:*#=!
echo 主板型号:!a!
)
set a=<nul

Rem 获取CPU信息
for /f "delims=" %%a in ('wmic cpu list full^|findstr "GHz"') do (
set a=%%a
set a=!a:~0,5!#!a:~5!
set a=!a:*#=!
echo CPU型号:!a!
)
set a=<nul
set b=<nul

Rem 获取显示器分辨率
for /f "delims=" %%a in ('wmic DESKTOPMONITOR get name^,ScreenWidth^,ScreenHeight^,PNPDeviceID /value^|findstr /i "screenWidth"') do (
set a=%%a
set a=!a:~0,12!#!a:~12!
set a=!a:*#=!
if !a! gtr 1 goto :step4
)
:step4
for /f "delims=" %%b in ('wmic DESKTOPMONITOR get name^,ScreenWidth^,ScreenHeight^,PNPDeviceID /value^|findstr /i "screenHeight"') do (
set b=%%b
set b=!b:~0,13!#!b:~13!
set b=!b:*#=!
if !b! gtr 1 goto :step5
)
:step5
echo 显示器分辨率:%a%x%b%
set a=<nul
set b=<nul

Rem 获取硬盘信息
for /f "delims=" %%a in ('wmic DISKDRIVE get model^,interfacetype^,size^,totalsectors^,partitions /value^|findstr /i "Model"') do (
set a=%%a
set a=!a:~0,6!#!a:~6!
set a=!a:*#=!
echo 硬盘型号:!a!
set /a num1+=1
set num2=0
for /f "delims=" %%b in ('wmic DISKDRIVE get model^,interfacetype^,size^,totalsectors^,partitions /value^|findstr /i "Size"') do (
set /a num2+=1
set b=%%b
set b=!b:~0,5!#!b:~5!
set b=!b:*#=!
set b=!b:~0,-10!
if !num1!==!num2! (set num2=1&echo 硬盘容量:!b!GB&set b=<nul)
)
)
set a=<nul
set b=<nul

Rem  获取硬盘序列号
set "index=0"
for /f "skip=1 delims=" %%a in ('wmic path Win32_PhysicalMedia get SerialNumber') do (
        set /a "index+=1"
        call set "硬盘序列号_%%index%%=%%a"
)
set 硬盘序列号_


Rem 获取内存信息
for /f "skip=1 tokens=2" %%a in ('wmic os get TotalVisibleMemorySize^,FreePhysicalMemory') do (
set var=%%a
set /a var=!var!/1024
)
echo 内存:!var!M
set var=<nul
Rem 获取显卡信息
for /f "skip=1 delims=" %%a in ('wmic path win32_videocontroller get description') do (
set var=%%a
goto video
)
)
:video
echo 显卡型号:!var!

pause>nul


我想把上面输出的结果在当前目录下保存为一个TXT文件,请问各位大侠如何实现啊!

2#
发表于 2021-5-25 15:26:46 | 只看该作者
除了@echo off,下面 echo 命令行,除了第一最后加上 >"%~DP0Systeminfo.txt",其他的最后都加上 >>"%~DP0Systeminfo.txt",保存即可。

点评

能否只调用一次">>"?  详情 回复 发表于 2021-5-25 17:00

评分

参与人数 1无忧币 +3 收起 理由
叶知秋 + 3 多谢指导

查看全部评分

回复

使用道具 举报

3#
发表于 2021-5-25 16:35:51 来自手机 | 只看该作者
echo;|abcd.bat>a.txt

点评

分号 ;就用不着了吧?echo|  详情 回复 发表于 2021-5-25 19:55
谢谢大侠指点,出在可以输出TXT文件了,实在感谢!  发表于 2021-5-25 18:52
谢谢大侠指点,出在可以输出TXT文件了,实在感谢!  详情 回复 发表于 2021-5-25 18:52

评分

参与人数 1无忧币 +3 收起 理由
叶知秋 + 3 很给力!

查看全部评分

回复

使用道具 举报

4#
发表于 2021-5-25 17:00:11 | 只看该作者
magicgenius 发表于 2021-5-25 15:26
除了@echo off,下面 echo 命令行,除了第一最后加上 >"%~DP0Systeminfo.txt",其他的最后都加上 >>"%~DP0S ...

能否只调用一次">>"?
回复

使用道具 举报

5#
 楼主| 发表于 2021-5-25 18:52:01 | 只看该作者
本帖最后由 叶知秋 于 2021-5-25 18:53 编辑

谢谢大侠指点,出在可以输出TXT文件了,实在感谢!现在改为

@echo off & color a & title 获取系统信息 ^& By 繁华背后的落寞
setlocal enabledelayedexpansion
Rem 获取系统版本
for /f "delims=" %%a in ('wmic process get^|findstr /i "Microsoft Windows"') do (
set /a a+=1
if !a!==2 (set var=%%a&goto st)
)
:st
for /f "delims=|" %%b in ("!var!") do (
for /f "tokens=19-21" %%i in ("%%b") do (
if "%PROCESSOR_ARCHITECTURE%"=="x86" set var=32位
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set var=64位
echo 操作系统:%%i %%j %%k !var!
)
)
set var=<nul
echo 当前计算机名:%computername%
echo 当前登陆用户名:%username%

Rem 获取IP地址
for /f "delims=" %%a in ('wmic nicconfig get IPAddress /value ^| findstr /i "IPAddress={"') do (
set var=%%a
for /f tokens^=2^ delims^=^"^" %%b in ("!var!") do (
echo IP地址:%%b
)
)

Rem 获取MAC地址
for /f "skip=3 tokens=1" %%a in ('getmac') do (
echo MAC地址:%%a
goto mac
)
:mac

Rem 获取主板型号
for /f "delims=" %%a in ('wmic BASEBOARD get Manufacturer^,Product^,Version^,SerialNumber /value^|findstr /i "product"') do (
set a=%%a
set a=!a:~0,8!#!a:~8!
set a=!a:*#=!
echo 主板型号:!a!
)
set a=<nul

Rem 获取CPU信息
for /f "delims=" %%a in ('wmic cpu list full^|findstr "GHz"') do (
set a=%%a
set a=!a:~0,5!#!a:~5!
set a=!a:*#=!
echo CPU型号:!a!
)
set a=<nul
set b=<nul

Rem 获取显示器分辨率
for /f "delims=" %%a in ('wmic DESKTOPMONITOR get name^,ScreenWidth^,ScreenHeight^,PNPDeviceID /value^|findstr /i "screenWidth"') do (
set a=%%a
set a=!a:~0,12!#!a:~12!
set a=!a:*#=!
if !a! gtr 1 goto :step4
)
:step4
for /f "delims=" %%b in ('wmic DESKTOPMONITOR get name^,ScreenWidth^,ScreenHeight^,PNPDeviceID /value^|findstr /i "screenHeight"') do (
set b=%%b
set b=!b:~0,13!#!b:~13!
set b=!b:*#=!
if !b! gtr 1 goto :step5
)
:step5
echo 显示器分辨率:%a%x%b%
set a=<nul
set b=<nul

Rem 获取硬盘信息
for /f "delims=" %%a in ('wmic DISKDRIVE get model^,interfacetype^,size^,totalsectors^,partitions /value^|findstr /i "Model"') do (
set a=%%a
set a=!a:~0,6!#!a:~6!
set a=!a:*#=!
echo 硬盘型号:!a!
set /a num1+=1
set num2=0
for /f "delims=" %%b in ('wmic DISKDRIVE get model^,interfacetype^,size^,totalsectors^,partitions /value^|findstr /i "Size"') do (
set /a num2+=1
set b=%%b
set b=!b:~0,5!#!b:~5!
set b=!b:*#=!
set b=!b:~0,-10!
if !num1!==!num2! (set num2=1&echo 硬盘容量:!b!GB&set b=<nul)
)
)
set a=<nul
set b=<nul

Rem  获取硬盘序列号
set "index=0"
for /f "skip=1 delims=" %%a in ('wmic path Win32_PhysicalMedia get SerialNumber') do (
        set /a "index+=1"
        call set "硬盘序列号_%%index%%=%%a"
)
set 硬盘序列号_


Rem 获取内存信息
for /f "skip=1 tokens=2" %%a in ('wmic os get TotalVisibleMemorySize^,FreePhysicalMemory') do (
set var=%%a
set /a var=!var!/1024
)
echo 内存:!var!M
set var=<nul
Rem 获取显卡信息
for /f "skip=1 delims=" %%a in ('wmic path win32_videocontroller get description') do (
set var=%%a
goto video
)
)
:video
echo 显卡型号:!var!

echo;|123.bat>a.txt

评分

参与人数 1无忧币 +2 收起 理由
being + 2 分辨率未正确显示,其它都很好。

查看全部评分

回复

使用道具 举报

6#
发表于 2021-5-25 19:55:26 | 只看该作者

分号 ;就用不着了吧?echo|
回复

使用道具 举报

7#
发表于 2021-5-25 20:34:45 | 只看该作者
分辨率未正确显示出来
回复

使用道具 举报

8#
发表于 2021-5-30 14:35:51 | 只看该作者
很实用的技术讨论贴。学习了!已收藏
回复

使用道具 举报

9#
发表于 2021-6-7 17:35:49 | 只看该作者
本帖最后由 being 于 2021-6-7 17:49 编辑

楼主关于分辨率的代码适合X86,如果是X64,我是这样解决的(插到原文里面去):
  1. Rem 获取显示器分辨率
  2. for /f "tokens=1,3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UnitedVideo" /s') do (
  3.     if "%%i" equ "DefaultSettings.XResolution" (
  4.         set /a ScreenWidth=%%j
  5.     ) else (
  6.         if "%%i" equ "DefaultSettings.YResolution" (
  7.             set /a ScreenHeight=%%j
  8.         )
  9.     )
  10. )
  11. echo 显示器分辨率:%ScreenWidth%,%ScreenHeight%
复制代码
回复

使用道具 举报

10#
发表于 2021-6-7 21:29:24 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

11#
发表于 2022-9-4 18:56:22 | 只看该作者
学习了,正好我也需要这个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 00:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表