![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 23:59 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]提取指定字符串前几个字符的处理 |
| 可打印版本 1,050 / 6 |
| 第1楼 hackate | 发表于 2008-11-21 19:37 |
| 中级用户 发帖 125 积分 228 | |
|
[已结]提取指定字符串前几个字符的处理 例如文本文件a.txt内容:
abckjdhasldjfajlksdf54k gfasdfgsadfagfdsgsdfgfdsg54ksdfg asdlfkj;alsdjf;lkjfdalskj;alskfjfdjaa54kdfhkdafshka 提取字符串"54k"前面16位不包括54k 提取后结果保存到文本b.txt内容如下: jdhasldjfajlksdf dfagfdsgsdfgfdsg lskj;alskfjfdjaa 看看大家都有什么好的处理方式,我感觉用纯批处理来做这个题有点低效率呢 [ Last edited by HAT on 2008-11-22 at 13:22 ] |
|
| 第2楼 HAT | 发表于 2008-11-21 19:47 |
| 版主 发帖 5,017 积分 9,023 | |
| 第3楼 hackate | 发表于 2008-11-21 20:03 |
| 中级用户 发帖 125 积分 228 | |
|
@echo off
for /f "delims=" %%a in (chuli.txt) do ( setlocal enabledelayedexpansion set "hang=%%a" set "hang=!hang:54k= !" call:guolv !hang! endlocal ) pause goto :eof :guolv for /f "delims= " %%b in ("%~1") do ( set "str=%%b" echo !str:~-16! ) goto :eof 用我的方法 其中的 ; 这个符号就会被过滤掉,导致这三行文本,前两行可以正确,但是最后一行取不到16个字符,但是HAT的方式可以做到... 在此想咨询下HAT兄,能否指正一下我错在哪了?是不是因为我使用了CALL传递参数过程传递不了; 这个符号吗?希望能够详细解答下.. |
|
| 第4楼 hackate | 发表于 2008-11-21 20:15 |
| 中级用户 发帖 125 积分 228 | |
|
感谢HAT.已经明白了.谢谢谢谢了....
|
|
| 第5楼 HAT | 发表于 2008-11-21 20:23 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 3楼 1. 如果想把setlocal enabledelayedexpansion放到for里面,建议放到set "hang=%%a"下面,否则会忽略感叹号。
2. 建议养成代码缩进的好习惯。 |
|
| 第6楼 hackate | 发表于 2008-11-22 13:03 |
| 中级用户 发帖 125 积分 228 | |
|
谢谢,,一点分数表示感谢..!
|
|
| 第7楼 cq1005 | 发表于 2008-12-12 14:41 |
| 新手上路 发帖 2 积分 1 | |
|
谢谢谢谢了....
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |