楼 主
P处理里的难题
发表于 2007-11-13 08:57 · 中国 浙江 杭州 联通
初级用户
★
积分 42 发帖 17 注册 2005-08-28 14:49 20年会员 UID 42027
状态 离线
比如说
用FOR循环语句 从1.txt提取每行 第4个字符后面所的内容并写入另一个文件
或是传递给后面的命令再分析
可是在1.txt里有!@#$%^&()等等特殊符号
如何才能区分开来?
难题????
如果你能解决了
我向版主申请加分了
因为你解决了这个问题后就意味命令行无所不能了
[ Last edited by 81291895 on 2007-11-14 at 12:24 AM ]
第 2 楼
发表于 2007-11-13 09:08 · 中国 湖北 武汉 电信
中级用户
★★
积分 471 发帖 207 注册 2007-05-03 14:53 19年会员 UID 87369 性别 男
状态 离线
@echo off
for /f "delims=: tokens=1*" %%a in ('findstr /n .* s.txt') do (
if %%a equ 3 echo %%b > newfile.txt
)
第 3 楼
发表于 2007-11-13 09:44 · 中国 浙江 杭州 联通
初级用户
★
积分 42 发帖 17 注册 2005-08-28 14:49 20年会员 UID 42027
状态 离线
感谢楼上帮助
可能是是你误解我的意思了
如:
我是说用 FOR /F 从1.txt提取每行写到另一个文件里 (这里的每行也可能是每行第几个字符开始提取),而1.TXT里有多少行没人知道实际数量
也就是说FOR是循环语句
[ Last edited by 81291895 on 2007-11-13 at 09:47 AM ]
第 4 楼
发表于 2007-11-13 09:47 · 中国 湖北 武汉 电信
中级用户
★★
积分 471 发帖 207 注册 2007-05-03 14:53 19年会员 UID 87369 性别 男
状态 离线
第 5 楼
发表于 2007-11-13 09:51 · 中国 浙江 杭州 联通
初级用户
★
积分 42 发帖 17 注册 2005-08-28 14:49 20年会员 UID 42027
状态 离线
用FOR循环语句 从1.txt提取每行 第4个字符后面所的内容并写入另一个文件
或是传递给后面的命令再分析
第 6 楼
发表于 2007-11-13 10:08 · 中国 云南 昆明 联通
初级用户
★
积分 90 发帖 43 注册 2007-10-31 11:00 18年会员 UID 101268 性别 男
状态 离线
第 7 楼
发表于 2007-11-13 11:14 · 中国 云南 昆明 联通
初级用户
★
积分 90 发帖 43 注册 2007-10-31 11:00 18年会员 UID 101268 性别 男
状态 离线
第 8 楼
发表于 2007-11-13 23:32 · 中国 浙江 杭州 联通
初级用户
★
积分 42 发帖 17 注册 2005-08-28 14:49 20年会员 UID 42027
状态 离线
第 9 楼
发表于 2007-11-14 00:35 · 中国 浙江 杭州 电信
银牌会员
★★★
积分 2,000 发帖 621 注册 2007-01-01 00:00 19年会员 UID 75212 性别 男
状态 离线
涉及特殊字符 确实是 p处理中的 相当大的一个难题;
说实话 p最不擅长的就是字符处理 反而被用来作多处理的 却是恰恰字符处理.....
还是用 sed awk perl 或 python 等 更适合它的东西 去解决;
不过你的问题 在这里还是能解决的;
代码如下
@echo off
for /f "delims=" %%a in ('findstr /n .* test.txt') do (
set "var=%%a"
setlocal enabledelayedexpansion
set "var=!var:~6!"
set var=!var:*:=!
echo.!var!
endlocal
)
pause
具体就不解释了 有点麻烦; 给你以下两个帖子做参考; 正是很久前也差不多是版里最后一次的讨论的成果.
最大限度原样输出含特殊字符的指定行内容
简析环境变量和变量延迟特殊字符以及中介法的微妙关系
[
Last edited by bjsh on 2007-11-14 at 12:38 AM ]
第 10 楼
发表于 2007-11-14 00:55 · 中国 浙江 杭州 联通
初级用户
★
积分 42 发帖 17 注册 2005-08-28 14:49 20年会员 UID 42027
状态 离线
非常感谢“bjsh”版主的帮助
没办法加分了
一会就写个脚本,当回报了 哈哈……
第 11 楼
发表于 2007-11-14 09:52 · 中国 云南 昆明 联通
初级用户
★
积分 90 发帖 43 注册 2007-10-31 11:00 18年会员 UID 101268 性别 男
状态 离线
我来个更简洁的吧,呵呵
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=%%i
echo !line:~4!>>2.txt
)
[
Last edited by bjsh on 2007-11-14 at 10:08 AM ]
第 12 楼
发表于 2007-11-14 10:09 · 中国 浙江 杭州 电信
银牌会员
★★★
积分 2,000 发帖 621 注册 2007-01-01 00:00 19年会员 UID 75212 性别 男
状态 离线
Originally posted by genteman at 2007-11-14 09:52 AM:
我来个更简洁的吧,呵呵
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=%%i
echo !line:~4!>>2.txt
)
呵呵;你试试下面的文本 看看能不能正确显示
你就会明白当初为什么讨论那么久 才会出那么一个结果了
!!!!!!!!!!!!!!!!!!!!
!@#$%^%$#@@$%^&**())
!!!!!!&&&**^^^^$$$$$
&&||^^&&||!123456789!&"&
ps: 本来想 引用你的回复的 不小心点成了编辑选项.
[
Last edited by bjsh on 2007-11-14 at 10:23 AM ]
第 13 楼
发表于 2007-11-14 10:36 · 中国 云南 昆明 联通
初级用户
★
积分 90 发帖 43 注册 2007-10-31 11:00 18年会员 UID 101268 性别 男
状态 离线
版主你说的情况确实没考虑到,不过可以这样解决的。
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=“%%i”
echo !line:~5,-1!>>2.txt
)
第 14 楼
发表于 2007-11-14 10:59 · 中国 浙江 杭州 电信
银牌会员
★★★
积分 2,000 发帖 621 注册 2007-01-01 00:00 19年会员 UID 75212 性别 男
状态 离线
Originally posted by genteman at 2007-11-14 10:36 AM:
版主你说的情况确实没考虑到,不过可以这样解决的。
setlocal enabledelayedexpansion
for /f %%i in (1.txt) do (
set line=“%%i”
echo !line:~5,-1!>>2.txt
)
不知道 你有没有经过测试;
我测试了一下 仍然是对下面的文本
!!!!!!!!!!!!!!!!!!!!
!@#$%^%$#@@$%^&**())
!!!!!!&&&**^^^^$$$$$
&&||^^&&||!123456789!&"&
代码的问题 1:对空行的处理(这里用处不大或者说几乎没有但是有这样的一个隐患)
2:对吃!及!!之间所有内容的问题
3:对第一行你可以看一下2.txt的对应第一行内容为什么
第 15 楼
发表于 2007-11-14 11:06 · 中国 云南 昆明 联通
初级用户
★
积分 90 发帖 43 注册 2007-10-31 11:00 18年会员 UID 101268 性别 男
状态 离线
嗯?怪事?
我在命令行里都测试通过了
没想到P里输出完全不一样
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正