标题: [文本处理] 纯DOS下不能使用for的/f /l等参数,请问如何解决 [打印本页]
作者: a262615704 时间: 2011-10-9 21:47 标题: 纯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
- setlocal enabledelayedexpansion
- for /f "tokens=1-3 delims=() " %%a in (info.txt) do (
- if "%%a" == "Disk:" (
- set /a value+=1
- set disk!value!=%%c
- for /f "tokens=1-7 delims=() " %%a in (info.txt) do (
- if "%%a" == "!value!.1:" (
- set par!value!=%%b
- set vol!value!=%%g
- )
- )
- )
- )
- echo 磁盘数量:%value%
- echo.
- for /l %%a in (1,1,%value%) do (
- if defined disk%%a (
- echo 第 %%a 磁盘容量:!disk%%a!
- if defined par%%a (
- echo 第一分区 容量:!par%%a!
- if defined vol%%a (
- echo 第一分区 卷标:!vol%%a:~3,-1!
- )
- )
- echo.
- )
- )
- echo *********************************
-
- pause>nul
复制代码
在XP下运行结果:
- *********************************
-
- 磁盘数量:2
-
- 第 1 磁盘容量:149.05GB
- 第一分区 容量:10.01GB
- 第一分区 卷标:GO7
-
- 第 2 磁盘容量:7.50GB
- 第一分区 容量:7.49GB
- 第一分区 卷标:时尚蛤蟆
-
- *********************************
复制代码
但是,在纯DOS下,不能使用for的 /f 和 /l 等参数,会提示语法错误。
请问,在纯DOS下,如何通过find、findstr、set等命令获得以上想要的结果?
非常感谢!!
作者: cjiabing 时间: 2011-10-9 22:43
把纯DOS换成不纯的CMD.
作者: CrLf 时间: 2011-10-9 23:19
估计纯批无解
作者: cjiabing 时间: 2011-10-9 23:37
相关文件有,DOS下部支持F /F,有人问过了。
作者: a262615704 时间: 2011-10-10 00:23
回复 3# CrLf
请问如何获得文本的总行数?
作者: garyng 时间: 2011-10-11 14:03
回复 5# a262615704
获取文件行数:- @echo off
- find /c /v ""<文件名
复制代码
作者: a262615704 时间: 2011-10-12 08:17
回复 6# garyng
请问这个行数的值怎么传给变量?记得是在纯DOS下。
作者: CrLf 时间: 2011-10-12 08:40
试试,估计实现不了- copy info.txt "&set lines="
- find /c /v "" "&set lines=">tmp.bat
- call tmp.bat
- echo %lines%
- del "&set lines="
复制代码
作者: garyng 时间: 2011-10-12 18:26
回复 7# a262615704
那我就不知咯~
没用过纯DOS~
开始接触电脑是时WIN XP的~
作者: xudaweb 时间: 2011-10-14 23:22
本帖最后由 xudaweb 于 2011-10-14 23:29 编辑
回复 7# a262615704 - for /f %%i in ( 'findstr /n . info.txt ^| find /c /v ""' ) do (
- set count=%%i
- )
- echo %count%
- pause>nul
复制代码
之前也遇到过这个问题,想把文本的行数传递给变量,实在没办法就把for搬出来了...虽然看着很累赘,但是可以用。
纯DOS下怎么弄就不知道了,纯DOS现在好像只有notebook代工企业里测试才发挥用处。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |