![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 20:40 |
共 47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]非常感谢HAT的帮助:删除文本中的指定字符串 |
| 可打印版本 818 / 5 |
| 第1楼 xugq | 发表于 2008-09-23 15:55 |
| 初级用户 发帖 24 积分 56 | |
|
[求助]非常感谢HAT的帮助:删除文本中的指定字符串 昨天有幸得到论坛上HAT朋友的帮助不胜感激.激发了我学习dos批处理的热情.
经过我今天一天的努力,终于有了结果.真的非常高兴. 我把HAT兄弟提供的代码给改写了一下.希望大家能帮我看看有什么问题没有 HAT 朋友的源代码: 后来经过我一天的研究给改成 这里边还好多问题不明白为什么.反正是能运行.哈哈. 我想大家热心是热心,但是归根结底自己还是要明白为什么. 谢谢HAT朋友了.啥也不说了. ───────────────── 版务记录 ───────────────── 执行:HAT 操作:在帖子标题中增加搜索关键字;代码加code标签 说明:原标题"非常感谢HAT兄弟的无私帮助"不利于论坛搜索 处罚:因属论坛新人,不予积分处罚 提示:请访问 {7326}论坛新手必读,所有人的基本行为准则 ───────────────── 版务记录 ───────────────── [ Last edited by HAT on 2008-9-24 at 09:13 PM ] |
|
| 第2楼 xugq | 发表于 2008-09-23 16:06 |
| 初级用户 发帖 24 积分 56 | |
|
啊.刚刚自己试运行又发现了个小问题.又改了一下
改完如下 @echo off >b.txt type nul for /f "tokens=1* delims=:" %%a in (a.txt) do ( if "%%b" equ "" ( >>b.txt echo %%a:%%b ) else ( set str=%%b set atr=%%a setlocal enabledelayedexpansion if "!str:~0,1!" neq "\" ( >>b.txt echo %%a:%%b ) else ( >>b.txt echo !atr:~0,-1!E:%%b ) endlocal ) ) move /y b.txt a.txt 这个批处理命令实现的目的就是删除文本中第一个包含:\的字符串的前一个字符 基本打到目的了.哈哈.就是要是比较长的文本运行起来比较慢.. |
|
| 第3楼 xugq | 发表于 2008-09-23 16:36 |
| 初级用户 发帖 24 积分 56 | |
|
另外还有几个问题想麻烦大家
就是在上边的代码中后的地方我一开始想这样的: ) else ( set ccc=%%a:~0,-1% >>b.txt echo %ccc%E:%%b ) 但是怎么试都不成功.后来从if "!str:~0,1!" 这段中得到启发最后想干脆试试, 没相到居然能行.我就不明白.这是为什么呢? 还有就是为什么非要是!atr:~0,-1!而%atr%:~0 -1%不行呢? 是语法有问题么? |
|
| 第4楼 HAT | 发表于 2008-09-23 17:06 |
| 版主 发帖 5,017 积分 9,023 | |
|
%%a
这种for循环的控制变量不允许进行变量扩展 |
|
| 第5楼 terse | 发表于 2008-09-23 17:33 |
| 银牌会员 发帖 946 积分 2,404 | |
|
你是删除全部:\的字符串的前一个字符 还是文本的第一个呢?
如果是删第一个 试下面的是否快点 |
|
| 第6楼 xugq | 发表于 2008-09-23 19:00 |
| 初级用户 发帖 24 积分 56 | |
|
楼上的兄弟.不是文本的第一个.有可能在文本中的任意一行中的任意一个地方.
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |