楼 主
[再次求助]新手请教批处理修改文本文件内容问题
发表于 2007-05-03 22:31 · 中国 福建 泉州 石狮市 电信
初级用户
★
积分 25 发帖 11 注册 2007-04-03 16:24 19年会员 UID 83843 性别 男
状态 离线
如偶一个文件,内容为(不括引号)" ABCDEFGHH PPP EGFAFDAF"
我要查找PPP并删除PPP和其后面的全部内容,没找到就跳过!
如何搞定?
先谢谢了!再次厚着脸皮发帖了!:P
第 2 楼
发表于 2007-05-03 22:47 · 中国 广东 湛江 廉江市 电信
高级用户
★★★
积分 959 发帖 311 注册 2006-04-11 14:08 20年会员 UID 53665 性别 男 来自 广东-LianJiang
状态 离线
假设你那个文件为1.txt
for /f "tokens=1 delims=PPP" %%i in (1.txt) do (
echo %%i >2.txt
)
κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
第 3 楼
发表于 2007-05-04 14:20 · 中国 福建 泉州 石狮市 电信
初级用户
★
积分 25 发帖 11 注册 2007-04-03 16:24 19年会员 UID 83843 性别 男
状态 离线
谢谢!!
但是当文件有回车苻时,只能输出回车前那一行,后面的里都不能输入到2.txt中
如内容为(不括引号)" ABCDEFGHH
44
PPP
EGFAFDAF"
只能输出第一行!!
如何改进?
第 4 楼
发表于 2007-05-04 14:21 · 中国 福建 泉州 石狮市 电信
初级用户
★
积分 25 发帖 11 注册 2007-04-03 16:24 19年会员 UID 83843 性别 男
状态 离线
第 5 楼
发表于 2007-05-04 17:27 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
效率比较低。
@echo off
for /f "delims=" %%a in (1.txt) do (
echo %%a|find /i "PPP" >nul 2>&1 && set str=batchering
if not defined str echo\%%a>>11.txt
)
start 11.txt
第 6 楼
发表于 2007-05-04 20:29 · 中国 福建 泉州 晋江市 电信
初级用户
★
积分 25 发帖 11 注册 2007-04-03 16:24 19年会员 UID 83843 性别 男
状态 离线
Originally posted by lxmxn at 2007-5-4 04:27 AM:
效率比较低。
@echo off
for /f "delims=" %%a in (1.txt) do (
echo %%a|find /i "PPP" >nul 2>&1 && set str=batchering
if not defined str echo\ ...
没话说,服了!!棒!
第 7 楼
发表于 2007-05-04 21:59 · 中国 福建 泉州 石狮市 电信
初级用户
★
积分 25 发帖 11 注册 2007-04-03 16:24 19年会员 UID 83843 性别 男
状态 离线
再问下,如果是删除 PPP 之前的全部文本,包括空格回车之类的,要怎么改?
第 8 楼
发表于 2007-05-05 21:45 · 中国 河北 廊坊 电信
新手上路
★
积分 8 发帖 3 注册 2007-05-04 18:02 19年会员 UID 87469 性别 男
状态 离线
Originally posted by qasa at 2007-5-3 10:47 PM:
假设你那个文件为1.txt
for /f "tokens=1 delims=PPP" %%i in (1.txt) do (
echo %%i >2.txt
)
能帮我看看我写的这段么?
@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."
chuier
第 9 楼
发表于 2007-05-06 16:04 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
Originally posted by chuier at 2007-5-5 21:45:
能帮我看看我写的这段么?
@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 ...
第一个for里面的%F%代表的是一个文件,如果没有这个文件,%%~fi 也会扩展它的全路径,最后导致第二个for命令可能因为找不到文件而退出。最好用 for /f %%a in ('dir %F%') do …… 的形式,来判断是不是有%F%这个文件。
我测试的时候是正常的,可以替换,但是总的来说,这个批处理不够严谨。
另外,提醒一下,新问题单独发个主题出来。
第 10 楼
能详细解释一下么?
发表于 2007-05-06 19:49 · 中国 河北 廊坊 电信
新手上路
★
积分 8 发帖 3 注册 2007-05-04 18:02 19年会员 UID 87469 性别 男
状态 离线
提问:
1 for /f "delims=" %%a in (1.txt) do (echo %%a|find /i "PPP" >nul 2>&1)命令中">&1"怎么理解?
2 set str=batchering什么含义?
等待答复............
chuier
第 11 楼
发表于 2007-05-06 20:15 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
Re chuier:
1、将句柄2(StdErr)的输出定向到句柄1的输入中,而句柄1的输入又被输出到空设备(Nul)了,所以 “2>&1” 可以屏蔽命令的错误输出(StdErr),类似于 2>nul ;
2、这里定义一个 str 是为 if not defined str 语句服务的,表示如果没有定义 str 变量的话,就执行后面的命令。
简单的解释这点了,想要详细了解它们的用法,可以搜索一下论坛相关的讨论。
第 12 楼
re
发表于 2007-05-06 20:58 · 中国 江苏 南京 中移铁通
初级用户
★
积分 26 发帖 11 注册 2006-12-15 10:48 19年会员 UID 73609 性别 男
状态 离线
for /f "tokens=1 delims=PPP" %%i in (1.txt) do (
echo\%%i >>2.txt
)
比较简单,只不过qasa的 echo %%i 〉2.txt 应改成echo\%%i >>2.txt
Just does it;I lov bat
第 13 楼
发表于 2007-05-06 22:01 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 20年会员 UID 59080
状态 离线
Originally posted by jinrich at 2007-5-6 20:58:
for /f "tokens=1 delims=PPP" %%i in (1.txt) do (
echo\%%i >>2.txt
)
比较简单,只不过qasa的 echo %%i 〉2.txt 应改成echo\%%i >>2.txt
这个不行,只能读取字符 P 前面的字符,不能处理 PPP 前面的字符。
第 14 楼
发表于 2007-05-08 04:26 · 中国 广东 深圳 宝安区 电信
新手上路
★
积分 2 发帖 1 注册 2007-03-02 11:05 19年会员 UID 80555 性别 男
状态 离线
Originally posted by caiyiqun at 2007-5-3 10:31 PM:
如偶一个文件,内容为(不括引号)" ABCDEFGHH PPP EGFAFDAF"
我要查找PPP并删除PPP和其后面的全部内容,没找到就跳过!
如何搞定?
先谢谢了!再次厚着脸皮发帖了!:P
那如果把PPP改为AAA如何改?保留后面全部内容
[
Last edited by a201 on 2007-5-8 at 04:27 AM ]
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正