[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理怎样获取硬盘大小并命名记事本?

求助大神!
机房维护,需要快速知道相同配置的电脑用了多大的硬盘、内存。
批处理需要有以下功能:
1、获取学生机电脑硬盘大小和内存大小,生成记事本,并用获取的硬盘大小、内存大小和计算机名命名记事本,具体这个样子:240g&4g&A6    (分隔符&可以用别的符号替代)
2、生成记事本后,拷贝该记事本到教师机的Y文件夹内(教师机有访问密码)。

回复 25# czjt1234


    教师机上运行可以看到以配置信息生成的文本文档,但不往Y文件夹里拷,学生机统一运行后就是黑框持续一会就消失了,没有生成任何文件,且教师机y文件夹里也没东西。如果手动运行一台学生机的批处理,持续一会黑框后,会在接受批处理的文件夹里生成配置信息命名的文本文档,也不拷贝。

TOP

  1. rem 另存为 ANSI 编码 bat
  2. ' & cls & cscript.exe /nologo /e:vbscript "%~f0" %* & exit /b
  3. S = "192.168.0.254"    '教师机的IP或计算机名
  4. U = "administrator"    '用户名
  5. P = "12345678"         '密码
  6. t = ""
  7. Set oWMI = GetObject("Winmgmts:\\.\Root\Cimv2")
  8. For Each i In oWMI.InstancesOf("Win32_PhysicalMemory")
  9.     t = t & CInt(i.Capacity / 1024 ^ 3) & "G" & "&"
  10. Next
  11. For Each i In oWMI.InstancesOf("Win32_DiskDrive")
  12.     t = t & CInt(i.Size / 1024 ^ 3) & "G" & "&"
  13. Next
  14. For Each i In oWMI.InstancesOf("Win32_OperatingSystem")
  15.     n = i.CSName
  16. Next
  17. Set oFSO = CreateObject("Scripting.FileSystemObject")
  18. Set oTextStream = oFSO.OpenTextFile(t & n & ".txt", 2, True)
  19. oTextStream.Write t & n
  20. oTextStream.Close()
  21. Set oWshShell = CreateObject("WScript.Shell")
  22. Randomize
  23. s = Int(10 * Rnd() + 1)
  24. oWshShell.Run "ping 127.0.0.1 -n " & s, 0, True
  25. oWshShell.Run "net use \\" & S & " " & P & " /user:" & U, 0, True
  26. oFSO.CopyFile t & n & ".txt", "\\" & S  & "\Y\"
  27. oWshShell.Run "net use \\" & S & " /delete", 0, True
复制代码
随机延时 1 ~ 10 秒再连接服务器,然后断开连接,这样试试看

QQ 20147578

TOP

回复 23# yanni_enya


    啊 ,这个不懂的说
可以试试给代码加个延迟 ,延迟一点时间后才工作
例如下面的 ,获取学生机的ip最后一位然后延迟 ,添加到之前的代码第一行后
  1. '&cls&@echo off&powershell -c "''"&cscript -e >nul
  2. @rem 仅第一个接口的ip
  3. @set @@ip=&for /f "tokens=2 delims= " %%a in ('arp -a') do if not defined @@ip set @@ip=%%a
  4. @set /a @@ip=(%@@ip:~-1%+0)%%5+1
  5. @timeout /t %@@ip%&set "@@ip="
复制代码

TOP

回复 22# Five66


    不行,那个20调大后自动就变回20了!

TOP

回复 21# yanni_enya


    不一定的说 ,也有可能是登陆数量或连接数的限制 ,这个就不知道怎么改了

TOP

回复 20# Five66


    好像还真是这问题,谢谢提示,明了我再试试~

TOP

回复 18# yanni_enya


   
教师机共享文件夹的用户数量限制是多少?调大了没?

TOP

回复 12# czjt1234


    您的代码和16楼的代码都可以实现功能,但是y文件夹内都只收到了21台电脑的信息!而且奇怪的是我是在两个机房试的,结果居然都是21台!

TOP

回复 16# Five66


    您的代码和12楼的代码都可以实现功能,但是y文件夹内都只收到了21台电脑的信息!而且奇怪的是我是在两个机房试的,结果居然都是21台!

TOP

回复 16# Five66


    功能实现!并且生成并拷贝到教师机上的文件命名合适,打开后是具体的内存和硬盘信息。
    只是学生机运行后会停顿在一个黑框处,交互式的询问下一步。这倒没什么,感谢您的付出~

TOP

回复 10# yanni_enya


   
win7默认ps版本不支持某些命令和选项 ,导致没有生成记事本
改了下
其中
教师机共享路径 \\192.168.1.2\Y
教师机用户administrator密码ffu
不是的自己改
记得教师机共享文件夹的用户数量限制调大点 ,以便所有学生机都能同时连接访问
  1. <# :
  2. cls&@echo off
  3. set ___sv=\\192.168.1.2\Y
  4. net use *  %___sv% "ffu" /user:administrator
  5. for /f "usebackq delims=" %%a in (`PowerShell -c "type -Literal '%~f0'|out-string|iex"`) do (
  6. set "___f=%%a"
  7. )
  8. copy /y "%___f%" "%___sv%"
  9. echo y|net use * /del
  10. timeout /t 2 1>nul&pause&exit/b
  11. #>
  12. #http://www.bathome.net/post.php?action=reply&fid=5&tid=68226&repquote=277711&extra=page%3D1&page=2
  13. # 获取内存信息
  14. function Get_Info_Memory() {
  15. #$memoryInfo = Get-CimInstance -ClassName Win32_PhysicalMemory
  16. $memoryInfo = Get-wmiobject -Class Win32_PhysicalMemory
  17. [void]$info.add( "内存:【 $( ($memoryInfo | Measure-Object).Count ) 】" )
  18. [void]$info.add( "    总容量: {0} GB" -f $( ( $memoryInfo | Measure-Object -Property Capacity -Sum ).Sum / 1GB ) )
  19. foreach ($memory in $memoryInfo) {
  20. #$( $memory.BankLabel )
  21. [void]$info.add( "    #   插槽    : $( $memory.DeviceLocator )" )
  22. [void]$info.add( "        品牌    : $( $memory.Manufacturer )" )
  23. [void]$info.add( "        序列号  : $( $memory.SerialNumber )" )
  24. [void]$info.add( "        容量    : $( $memory.Capacity / 1GB ) GB" )
  25. [void]$info.add( "        最高频率: $( $memory.Speed )" )
  26. }
  27. [void]$info.add( "" )
  28. if($ooo.count){[void]$ooo.add([int64](( $memoryInfo | Measure-Object -Property Capacity -Sum ).Sum / 1GB))}
  29. }
  30. # 获取硬盘信息
  31. function Get_Info_Disk() {
  32. #$diskInfo = Get-CimInstance -ClassName Win32_DiskDrive | Where-Object { $_.MediaType -eq 'Fixed hard disk media' }
  33. $diskInfo = Get-wmiobject -Class Win32_DiskDrive | Where-Object { $_.MediaType -eq 'Fixed hard disk media' }
  34. if($BuildVersion.Major -ge '10'){
  35. foreach ($disk in $diskInfo) {
  36. $physicalDisk = Get-PhysicalDisk | Where-Object { ('\\.\PHYSICALDRIVE' + $_.DeviceID ) -eq $disk.DeviceID }
  37. Add-Member -InputObject $disk -MemberType NoteProperty -Name BusType -Value $physicalDisk.BusType
  38. }}
  39. [void]$info.add( "硬盘:【 $( ($diskInfo | Measure-Object).Count ) 】" )
  40. foreach ($disk in $diskInfo) {
  41. [void]$info.add( "    #   DeviceID: $( $disk.DeviceID )" )
  42. [void]$info.add( "        BusType : $( $disk.BusType )" )
  43. [void]$info.add( "        型号    : $( $disk.Model )" )
  44. [void]$info.add( "        序列号  : $( $disk.SerialNumber )" )
  45. [void]$info.add( "        容量    : $( [int]($disk.Size / 1GB) ) GB" )
  46. }
  47. [void]$info.add( "" )
  48. if($ooo.count){[void]$ooo.add([int64](($diskInfo | Measure -sum -Property size).sum / 1GB))}
  49. }
  50. $ooo=[System.Collections.ArrayList]@()
  51. [void]$ooo.add($env:COMPUTERNAME)
  52. $info = [System.Collections.ArrayList]@()
  53. Get_Info_Memory
  54. Get_Info_Disk
  55. $fff=$env:TEMP+'\'+$ooo[2]+'g_'+$ooo[1]+'g_'+$ooo[0]+'.txt'
  56. #$info | Out-File -LiteralPath $fff
  57. [io.file]::WriteAllText($fff,($info|out-string))
  58. $fff
复制代码

TOP

回复 13# aloha20200628


    短小精悍!尝试用copy命令把生成的文件拷贝到教师机y文件夹上,代码看不来谁是谁

TOP

回复 12# czjt1234


    功能实现!

TOP

本帖最后由 aloha20200628 于 2024-10-20 21:19 编辑

回复 1# yanni_enya

给一个用wmic方法直接获取当前内存总量/主盘总量,以便生成楼主所需参数文件的批处版本...
备注》参数文件命名格式为 "内存总量_主盘总量_本机名称.txt",其中本机名称可从系统变量 %COMPUTERNAME% 获取
  1. @echo off &setlocal
  2. for /f %%a in ('wmic ComputerSystem GET TotalPhysicalMemory^|findstr "[0-9][0-9]*" ') do set "mv=%%a"
  3. for /f "tokens=2 delims= " %%a in ('wmic diskdrive get index^,size^|findstr /b "0" ') do set "dv=%%a"
  4. cd.>"%mv:~,-9%G_%dv:~,-9%G_%COMPUTERNAME%.txt"
  5. endlocal&pause&exit/b
复制代码

TOP

返回列表