Board logo

标题: 求一个能判断物理内存大小的批处理 [打印本页]

作者: tclshx     时间: 2006-10-29 01:45    标题: 求一个能判断物理内存大小的批处理

运行时能判断内存的大小,若内存为128以下则运行1项,若内存为150以上则运行2项

[ Last edited by tclshx on 2006-10-29 at 02:41 AM ]
作者: vkill     时间: 2006-10-29 01:48
systeminfo|find "物理内存总量"
作者: namejm     时间: 2006-10-29 01:58
  类似的帖子请看:[原创]一句话,整理内存(WMI+VBS+HTA+BAT)

[ Last edited by namejm on 2006-10-29 at 09:32 AM ]
作者: zerocq     时间: 2006-10-29 02:09
for /f "tokens=1-2" %a in ('systeminfo^|find "物理内存总量"') do @echo %b&&set i=%b

if ........
作者: redtek     时间: 2006-10-29 02:37
要真是内存为128MB以下估计运行XP本身都得等疯了,哈哈~:)
估计楼主是做启动盘等用到的内存虚拟盘或是纯DOS要用到的(瞎猜,楼主忘写清楚了只能瞎猜:)
作者: tclshx     时间: 2006-10-29 02:44


  Quote:
Originally posted by redtek at 2006-10-29 02:37 AM:
要真是内存为128MB以下估计运行XP本身都得等疯了,哈哈~:)
估计楼主是做启动盘等用到的内存虚拟盘或是纯DOS要用到的(瞎猜,楼䠮..

用来安装XPE到硬盘,当内存为128M以下时,安装适合该内存的XPE,当内存为150M内上时安装适合该内存的XPE
作者: redtek     时间: 2006-10-29 05:12
MS-DOS 6.22 的 MEM.EXE 只能看到 64MB内存为上限,
(上面是我个人测试结果,不代表正确性或是通用性,也不代表某种暗示和定义)。

在VMware 虚拟机上给 MS-DOS 6.22 虚拟系统分配512MB和其它大小内存,
发现mem.exe只能看到64MB以下内存,再大的内容看不到。
CODE:  [Copy to clipboard]
Conventional Memory Detail:

  Segment               Total        Name         Type
  -------          ----------------  -----------  --------
   00000              1,039    (1K)               Interrupt Vector
   00040                271    (0K)               ROM Communication Area
   00050                527    (1K)               DOS Communication Area
   00070              2,656    (3K)  IO           System Data
                                        CON       System Device Driver
                                        AUX       System Device Driver
                                        PRN       System Device Driver
                                        CLOCK$    System Device Driver
                                        A: - C:   System Device Driver
                                        COM1      System Device Driver
                                        LPT1      System Device Driver
                                        LPT2      System Device Driver
                                        LPT3      System Device Driver
                                        COM2      System Device Driver
                                        COM3      System Device Driver
                                        COM4      System Device Driver
   00116              5,072    (5K)  MSDOS        System Data
   00253              7,616    (7K)  IO           System Data
                      1,104    (1K)     XMSXXXX0  Installed Device=HIMEM   
                      1,488    (1K)               FILES=30
                        256    (0K)               FCBS=4
                        512    (1K)               BUFFERS=15
                      2,288    (2K)               LASTDRIVE=Z
                      1,856    (2K)               STACKS=9,128
   0042F                 80    (0K)  MSDOS        System Program
   00434              2,656    (3K)  COMMAND      Program
   004DA                 80    (0K)  MSDOS        -- Free --
   004DF                272    (0K)  COMMAND      Environment
   004F0                 96    (0K)  MEM          Environment
   004F6                 16    (0K)  MSDOS        -- Free --
   004F7              2,864    (3K)  DOSIDLE      Program
   005AA              4,144    (4K)  DOSKEY       Program
   006AD             88,992   (87K)  MEM          Program
   01C67            536,976  (524K)  MSDOS        -- Free --

Memory Summary:

  Type of Memory       Total   =    Used    +    Free
  ----------------  ----------   ----------   ----------
  Conventional         653,312       27,248      626,064
  Upper                      0            0            0
  Reserved                   0            0            0
  Extended (XMS)    66,060,288       65,536   65,994,752
  ----------------  ----------   ----------   ----------
  Total memory      66,713,600       92,784   66,620,816

  Total under 1 MB     653,312       27,248      626,064

  Memory accessible using Int 15h              0     (0K)
  Largest executable program size        625,952   (611K)
  Largest free upper memory block              0     (0K)
  MS-DOS is resident in the high memory area.

  XMS version  3.00; driver version  3.16
(不知道是否有其它工具可以看到)
(或用Turbo C等编一个,或是汇编也可以得到物理内存总量--我不会)

(你可以参考一下别的带有分配不同大小虚拟盘的启动盘上所用的方法或什么工具)

[ Last edited by redtek on 2006-10-29 at 05:14 AM ]
作者: tclshx     时间: 2006-10-29 21:54
看来只有人工判断后再选择了
作者: redtek     时间: 2006-10-29 23:20
刚安装完 MS-DOS7.10,
在这个版本的 MS-DOS 7.10上可以MEM.EXE可以看到实际内容大小。

(试验给虚拟机里的 MS-DOS7.10分配了256MB大小的内存,看到了~:)

(后,将MS-DOS7.10的MEM.EXE拷贝到了MS-DOS6.22上,
 并设置虚拟机内存为256MB,结果看到的还是 64MB内存。给MS-DOS6.22再多内存也看不到了)

但并不代表MS-DOS6.22就真的看不到实际内存大小,
只是(可能)由于内存管理驱动himem.sys或是别的原理造成,还没试验。

……
 
作者: 不得不爱     时间: 2006-10-29 23:27
MEM.EXE有好几个版本,不同的版本在测试内存时有不同的表现
作者: redtek     时间: 2006-10-29 23:54
使用 MS-DOS7.10 与 MS-DOS6.22 不同版本的 MEM.EXE 观察内存总数,
然后除以 1024KB 取得MB,最后是 MS-DOS 7.10 可以得出准确的MB数,
而 MS-DOS 6.22只能得到相近的数字(表面上看不太准确,但并不表示有问题或其它)

CONFIG.SYS内容如下:
CODE:  [Copy to clipboard]
DEVICE=C:\DOS\HIMEM.SYS
DOS=HIGH,UMB
FILES=30
MS-DOS 6.22   HIMEM.SYS     大小:19136
MS-DOS 7.10     HIMEM.SYS     大小:33191


) 在MS-DOS 6.22 版本下,加载 MS-DOS 7.10版本中的 HIMEM.SYS,
  还必须使用 MS-DOS 7.10 版的 MEM.EXE 才可以看到准确的大小64MB的内存。
  而此时如果使用 MS-DOS 6.22 自带的 MEM.EXE 仍看不到大于 64MB的内存。
  
) 但是,在 MS-DOS 6.22 版本下,如果加载的是自带的(非MS-DOS 7.10)版的 HIMEM.SYS,
  那么,用任何一版(MS-DOS 6.22 或是 MS-DOS 7.10)的 MEM.EXE都不能看到大于64MB 的内存。

) 以上实验暂时确定为 himem.sys 与 mem.exe 版本问题。
  MS-DOS 6.22版的himem.sys为94年版,1995年的32MB内存条(组合)中国售价约 9000元人民币!
  要是合成现在内存价格1G约为 2万元,哈哈……(假设)
  那个时代没有这么大的内存,所以那个年代的himem.sys用不着判断再大的内存。

) 还是 MS-DOS 7.10 过瘾:)
作者: jenejhon     时间: 2010-6-10 11:33    标题: dos下利用MEM和DD获得内存大小(设想)

在DOS下,建立TESTMEM.bat运行MEM >MEM.TXT
利用DD截取内存总数写到批处理中echomem.bat。以下是TESTMEM.bat内容:
testmem.bat:
@echo off
mem >mem.txt
dd ......

echomem.bat:
@echo off
set nAllMem=9999999
echo "物理内存大小是: %nAllMEM% KB

以上只是设想,应该可以实现。
作者: nylxhu     时间: 2010-8-16 15:54
我也想知道