![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 12:09 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [再次求助]新手请教批处理修改文本文件内容问题 |
| 可打印版本 1,664 / 13 |
| 第1楼 caiyiqun | 发表于 2007-05-03 22:31 |
| 初级用户 发帖 11 积分 25 | |
|
[再次求助]新手请教批处理修改文本文件内容问题 如偶一个文件,内容为(不括引号)" ABCDEFGHH PPP EGFAFDAF"
我要查找PPP并删除PPP和其后面的全部内容,没找到就跳过! 如何搞定? 先谢谢了!再次厚着脸皮发帖了!:P |
|
| 第2楼 qasa | 发表于 2007-05-03 22:47 |
| 高级用户 发帖 311 积分 959 来自 广东-LianJiang | |
|
假设你那个文件为1.txt |
|
| 第3楼 caiyiqun | 发表于 2007-05-04 14:20 |
| 初级用户 发帖 11 积分 25 | |
|
谢谢!!
但是当文件有回车苻时,只能输出回车前那一行,后面的里都不能输入到2.txt中 如内容为(不括引号)" ABCDEFGHH 44 PPP EGFAFDAF" 只能输出第一行!! 如何改进? |
|
| 第4楼 caiyiqun | 发表于 2007-05-04 14:21 |
| 初级用户 发帖 11 积分 25 | |
|
FOR 命令好深呀,不懂,正在努力学习中
|
|
| 第5楼 lxmxn | 发表于 2007-05-04 17:27 |
| 版主 发帖 4,938 积分 11,386 | |
|
效率比较低。
|
|
| 第6楼 caiyiqun | 发表于 2007-05-04 20:29 |
| 初级用户 发帖 11 积分 25 | |
Originally posted by lxmxn at 2007-5-4 04:27 AM: |
|
| 第7楼 caiyiqun | 发表于 2007-05-04 21:59 |
| 初级用户 发帖 11 积分 25 | |
|
再问下,如果是删除 PPP 之前的全部文本,包括空格回车之类的,要怎么改?
|
|
| 第8楼 chuier | 发表于 2007-05-05 21:45 |
| 新手上路 发帖 3 积分 8 | |
Originally posted by qasa at 2007-5-3 10:47 PM: 能帮我看看我写的这段么? @echo off setlocal enabledelayedexpansion set F=1.txt set "F=%F:"=%" for %%i in ("%F%") do set F=%%~fi set a=PPP set b= for /f "delims=" %%i in ('type "%F%"') do ( set str=%%i set "str=!str:%a%=%b%!" echo !str!>>"%F%"_new.txt ) 为什么显示的是"ECHO is off." |
|
| 第9楼 lxmxn | 发表于 2007-05-06 16:04 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by chuier at 2007-5-5 21:45: 第一个for里面的%F%代表的是一个文件,如果没有这个文件,%%~fi 也会扩展它的全路径,最后导致第二个for命令可能因为找不到文件而退出。最好用 for /f %%a in ('dir %F%') do …… 的形式,来判断是不是有%F%这个文件。 我测试的时候是正常的,可以替换,但是总的来说,这个批处理不够严谨。 另外,提醒一下,新问题单独发个主题出来。 |
|
| 第10楼 chuier | 发表于 2007-05-06 19:49 |
| 新手上路 发帖 3 积分 8 | |
|
能详细解释一下么? 提问:
1 for /f "delims=" %%a in (1.txt) do (echo %%a|find /i "PPP" >nul 2>&1)命令中">&1"怎么理解? 2 set str=batchering什么含义? 等待答复............ |
|
| 第11楼 lxmxn | 发表于 2007-05-06 20:15 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re chuier:
1、将句柄2(StdErr)的输出定向到句柄1的输入中,而句柄1的输入又被输出到空设备(Nul)了,所以 “2>&1” 可以屏蔽命令的错误输出(StdErr),类似于 2>nul ; 2、这里定义一个 str 是为 if not defined str 语句服务的,表示如果没有定义 str 变量的话,就执行后面的命令。 简单的解释这点了,想要详细了解它们的用法,可以搜索一下论坛相关的讨论。 |
|
| 第12楼 jinrich | 发表于 2007-05-06 20:58 |
| 初级用户 发帖 11 积分 26 | |
|
re for /f "tokens=1 delims=PPP" %%i in (1.txt) do (
echo\%%i >>2.txt ) 比较简单,只不过qasa的 echo %%i 〉2.txt 应改成echo\%%i >>2.txt |
|
| 第13楼 lxmxn | 发表于 2007-05-06 22:01 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by jinrich at 2007-5-6 20:58: 这个不行,只能读取字符 P 前面的字符,不能处理 PPP 前面的字符。 |
|
| 第14楼 a201 | 发表于 2007-05-08 04:26 |
| 新手上路 发帖 1 积分 2 | |
Originally posted by caiyiqun at 2007-5-3 10:31 PM: 那如果把PPP改为AAA如何改?保留后面全部内容 [ Last edited by a201 on 2007-5-8 at 04:27 AM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |