中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-25 19:07
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结][求助] - 文本中提取指定的内容(位置会变动的) 查看 4,040 回复 20
16 发表于 2006-10-17 04:29 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
我怎么觉得不是太精彩,呵呵 ...........
我今后在论坛的目标就是做个超级坏人!!!
17 发表于 2006-10-17 05:26 ·  中国 浙江 温州 电信
中级用户
★★
积分 458
发帖 196
注册 2006-10-05 12:04
19年会员
UID 64614
状态 离线
Originally posted by namejm at 2006-10-17 00:37:
  无奈何第5楼的代码十分高效,充分利用了shift来对参数进行改位操作,去掉敏感字符的方法也比较巧妙,以后获取指定位置的字符串可以套用这个 ...


那段看了半天只看懂一点点,BZ能讲解一下吗

经典的代码:D
18 发表于 2006-10-17 05:35 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
思想的碰撞会产生出火花,瞬时一显也会让人眼睛一亮。
namejm 兄有些过奖了,小修了一下 5 楼代码,改善一下通用行。可以处理下面的文本了:

input type=hidden name=id VALUE=465974855 <input type=hidden name=id value="1820988170"><input type=hidden name=id value=1008964101>



  1. @echo off
  2. setlocal enabledelayedexpansion
  3. FOR /F "delims=" %%i IN (input.txt) do (
  4. set "t=%%i"
  5. set "t=!t:<= !"
  6. set "t=!t:>= !"
  7. set "t=!t:&= !"
  8. set "t=!t:|= !"
  9. call :sub !t!
  10. )
  11. goto :EOF

  12. :sub
  13. if "%1" == "" exit /b
  14. if "%F%" == "1" echo %~1 &set F=0
  15. if /i "%1" == "value" set F=1
  16. shift
  17. goto sub
无奈何发表于 2006-10-16 17:33


[ Last edited by 无奈何 on 2006-10-17 at 05:38 ]
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

19 发表于 2006-10-17 05:48 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
Re zerocq
我不知道你对哪一部分不理解,是不是对不太常用的 shift 不太理解还是哪里?你可以先看一下命令的帮助信息,如 set /? shift /? 。
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

20 发表于 2006-10-17 12:42 ·  中国 四川 成都 移动
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Originally posted by pip at 2006-10-17 02:59:
我也顺便来一个,大体跟无奈何的一致,不过有些细节不太一样

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (1.txt) do (
set "a=%%a&q ...
set "a=!a:*value=!"
……

  原来set也支持通配符的,pip兄还像以前那样善于在细微处下工夫,对你的景仰有如滔滔江水
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
21 发表于 2007-10-16 18:42 ·  中国 广东 东莞 电信
初级用户
积分 26
发帖 12
注册 2007-10-13 18:43
18年会员
UID 99648
性别 男
状态 离线
要找的就是这个啊,正在学习中
论坛跳转: