Board logo

标题: [已结]获取文件中特定位置的字符串 [打印本页]

作者: hugreen     时间: 2009-3-12 12:53    标题: [已结]获取文件中特定位置的字符串
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 ]

作者: yishanju     时间: 2009-3-12 20:28
这样做有什么用呢
能说明一下用途目的吗

作者: netbenton     时间: 2009-3-13 02:26
::取指定行列数据
@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 ]

作者: hugreen     时间: 2009-3-17 09:40
谢谢netbenton,测试可以读取数据
请问:
set/a mu=n/25+1中的25是做什么用的??
还有就是echo后面跟个点和不带点有什么区别??

作者: 26933062     时间: 2009-3-17 10:10

@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

作者: netbenton     时间: 2009-3-17 20:35
超过26列的用到那一句来分割,比如5行80列,
如果小于32列的,这样就以了,取%1行%2列:
for /f "skip=%1 tokens=%2" %%a in ('echo.^&type a.txt') do echo.%%a

echo.后一点,可以用来显示空行,内容不空时,有没有一点都一样。

作者: hugreen     时间: 2009-4-4 22:38
哦,知道了,原来是防空处理
THAKNS