中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 13:43
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]获取文件中特定位置的字符串 查看 827 回复 6
楼 主 [已结]获取文件中特定位置的字符串 发表于 2009-03-12 12:53 ·  中国 北京 鹏博士BGP
初级用户
积分 23
发帖 15
注册 2008-03-26 19:44
18年会员
UID 114120
性别 男
状态 离线
a.txt文件内容如下:
218 221 233 221 217 206 209 208 209 212 213 213.
213 211 210 213 215 217 215 214 215 218 218 181
172 171 166 171 168 171 164 157 150 148 145 141.
140 142 143 146 142 143 146 146 145 141 140 139
140 142 141 141 137 137 139 139 138 140 140 140=
UB
74 79 84 82 81 80 83 84 83 89 84 90
84 59 37 28 27 28 25 23 23 25 45 52 23 1544.
59 61 67 77 78 80 83 81 87 86 83 81
72 52 38 26 19 16 14 10 14 17 26 36 08 1511.
40 54 66 67 75 77 70 81 72 70 75 78
64 46 26 20 14 13 12 13 14 17 18 22 11 1453.
像数组操作一样,随机获取文件中第M行N列的元素,并存储在变量中,可以实现吗?

[ Last edited by hugreen on 2009-4-6 at 20:38 ]
2 发表于 2009-03-12 20:28 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
这样做有什么用呢
能说明一下用途目的吗

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
3 发表于 2009-03-13 02:26 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
::取指定行列数据
@echo off&Setlocal Enabledelayedexpansion

::指定行
set/a m=%1 1>nul
::指定列
set/a n=%2 2>nul

set/a nn=n
for /f "skip=%m% delims=" %%a in ('echo.^&type ABC.txt') do (
set str=%%a
if "!str!"=="" goto :eof
set/a mu=n/25+1
for /l %%b in (1,1,!mu!) do (
if !nn! leq 26 (
call :sub
echo. data: !str!
pause
goto :eof
) else (
for /f "tokens=25*" %%c in ('echo.!str!') do set str=%%d
)
set/a nn=n-25

)
)

:sub
for /f "tokens=%nn%" %%c in ('echo.!str!') do set str=%%c


[ Last edited by netbenton on 2009-3-13 at 04:43 ]
精简
=> 个人网志
4 发表于 2009-03-17 09:40 ·  中国 北京 鹏博士BGP
初级用户
积分 23
发帖 15
注册 2008-03-26 19:44
18年会员
UID 114120
性别 男
状态 离线
谢谢netbenton,测试可以读取数据
请问:
set/a mu=n/25+1中的25是做什么用的??
还有就是echo后面跟个点和不带点有什么区别??
5 发表于 2009-03-17 10:10 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线

@echo off
::指定行
set/a m=%1
::指定列
set/a n=%2
set/a m-=1
call :loop
pause&exit
:loop
if %m% lss 1 (set skip=) else (set skip=skip=%m%)
for /f "%skip% tokens=%n%" %%a in (a.txt) do echo %%a&goto :EOF
goto :EOF
致精致简!
6 发表于 2009-03-17 20:35 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
超过26列的用到那一句来分割,比如5行80列,
如果小于32列的,这样就以了,取%1行%2列:
for /f "skip=%1 tokens=%2" %%a in ('echo.^&type a.txt') do echo.%%a

echo.后一点,可以用来显示空行,内容不空时,有没有一点都一样。
精简
=> 个人网志
7 发表于 2009-04-04 22:38 ·  中国 广东 广州 电信
初级用户
积分 23
发帖 15
注册 2008-03-26 19:44
18年会员
UID 114120
性别 男
状态 离线
哦,知道了,原来是防空处理
THAKNS
论坛跳转: