Board logo

标题: [已解决]高手帮我编写一下截取指定数字的批处理。 [打印本页]

作者: ajian     时间: 2010-11-25 21:06    标题: [已解决]高手帮我编写一下截取指定数字的批处理。

文本txt文件最后一行如下:
"已完成"        "呼叫已完成"        "0x00000012"        11/24/2010 17:21:47        11/24/2010 17:23:31        "USB Data Fax Voice Modem"        "C:\Documents and Settings\All Users\Application Data\Microsoft\Windows NT\MSFax\Queue\1CB8BB904D660.tif"        80054        "Fax"        "Fax"        "88888888"        " "        4

要求只取"88888888"里的数字,这个数字位数可能会变化,不一定就是8位,还有整个行的字符长度也会变化,有什么办法可以只取到这里面的数字,而且不能多取也不能少取,哪位高手帮忙一下。

[ Last edited by ajian on 2010-12-3 at 16:50 ]
作者: 不得不爱     时间: 2010-11-25 21:18
80054 和 4也是纯数字吧  他们也要取吧?
还有其他规律吗?  纯数字都是""内的吧?
作者: ajian     时间: 2010-11-25 21:20
不取,只取那个电话号码,其它一律不取。
作者: ajian     时间: 2010-11-25 21:22
4要取也行,但得保存在另一个变量,4也可能会有位数变化,代表几页传真。
作者: qinchun36     时间: 2010-11-25 21:28
for + shift
作者: ajian     时间: 2010-11-25 22:25
不好意思,本人比较菜,能不能帮我写一下批处理?
作者: qinchun36     时间: 2010-11-25 22:39
这样取的依据是它的位置一直是第 13 个
@echo off
set fn="C:\Documents and Settings\Ching Chum\Desktop\新建 文本文档.txt"
for /f "usebackq delims=" %%a in (%fn%) do set lastLine=%%a
call :getThe13thArg theNumber %lastLine%
echo 截取的数字是 %theNumber%
pause
goto :EOF

:getThe13thArg
set varName=%1
for /l %%i in (1,1,13) do shift /1
set %varName%=%1

作者: ajian     时间: 2010-11-25 23:32
不能根据位置,因为其它地方的字符都有可能会变化的。
作者: ajian     时间: 2010-11-25 23:42
从后面截取的话,只要注意那个4有可能会变化,有时会有两个、三个数字,算起来比前面要简单。
作者: ajian     时间: 2010-11-28 23:59
没人帮我了?
作者: freeants001     时间: 2010-11-29 10:51

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%z in (test.txt) do (
  set "var=%%z"
  set "var=!var:        =        !"
  for /f "tokens=11 delims=        " %%a in ("!var!") do set "var=%%a"
  echo.!var:"=!
)
pause

作者: Hanyeguxing     时间: 2010-11-29 12:18
楼主说指定的数字,却没有说如何定位到这个数字的规律,顺便说一下,0x00000012也是数字。。。

[ Last edited by Hanyeguxing on 2010-11-29 at 13:29 ]
作者: ajian     时间: 2010-12-1 22:23
确实没什么规律,真是比较麻烦。
作者: ajian     时间: 2010-12-1 22:27
7楼的好像可以啊,太感谢了。
作者: yf6122010     时间: 2010-12-8 16:31
学习了..批处理这么强大?