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

[文本处理] 纯DOS下不能使用for的/f /l等参数,请问如何解决

本帖最后由 a262615704 于 2011-10-9 21:49 编辑

info.txt保存了两块磁盘的信息,内容如下:
Disk: 1 (149.05GB) M:[WDC WD1600AAJS-22PSA0] S:[WD-WCAP91806016]
    1.1: (  10.01GB) [G:\] Active Volume NTFS l:[GO7]
    1.2: (  18.94GB) [D:\] Volume NTFS l:[PAGE]
    1.3: ( 100.09GB) [E:\] Volume NTFS l:[DATA]
    1.4: (     10GB) [F:\] Volume NTFS l:[WIN7]
    1.5: (     10GB) [C:\] Volume NTFS l:[WINXP]
         (   2.49MB) Unused Space
Disk: 2 (7.50GB) M:[Ut165 USB Flash Disk 0.00]
    2.1: (   7.49GB) [I:\] Active Volume NTFS l:[时尚蛤蟆]
         (   6.33MB) Unused Space

  1. setlocal enabledelayedexpansion
  2. for /f "tokens=1-3 delims=() " %%a in (info.txt) do (
  3.     if "%%a" == "Disk:" (
  4.         set /a value+=1
  5.         set disk!value!=%%c
  6.         for /f "tokens=1-7 delims=() " %%a in (info.txt) do (
  7.              if "%%a" == "!value!.1:" (
  8.                 set par!value!=%%b
  9.                 set vol!value!=%%g
  10.             )
  11.         )
  12.     )
  13. )
  14. echo           磁盘数量:%value%
  15. echo.
  16. for /l %%a in (1,1,%value%) do (
  17.     if defined disk%%a (
  18.         echo      第 %%a 磁盘容量:!disk%%a!
  19.         if defined par%%a (
  20.             echo      第一分区 容量:!par%%a!
  21.             if defined  vol%%a (
  22.                 echo      第一分区 卷标:!vol%%a:~3,-1!
  23.             )
  24.         )
  25.         echo.
  26.     )
  27. )
  28. echo *********************************
  29. pause>nul
复制代码



在XP下运行结果:
  1. *********************************
  2.           磁盘数量:2
  3.      第 1 磁盘容量:149.05GB
  4.      第一分区 容量:10.01GB
  5.      第一分区 卷标:GO7
  6.      第 2 磁盘容量:7.50GB
  7.      第一分区 容量:7.49GB
  8.      第一分区 卷标:时尚蛤蟆
  9. *********************************
复制代码



但是,在纯DOS下,不能使用for的 /f 和 /l 等参数,会提示语法错误。

请问,在纯DOS下,如何通过find、findstr、set等命令获得以上想要的结果?

非常感谢!!

回复 3# CrLf


   请问如何获得文本的总行数?

TOP

回复 6# garyng


   请问这个行数的值怎么传给变量?记得是在纯DOS下。

TOP

返回列表