中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]逐行读取记事本A,把已读取的行删除,并保存为B
作者:
标题: [已结]逐行读取记事本A,把已读取的行删除,并保存为B 上一主题 | 下一主题
jajah
新手上路





积分 10
发帖 6
注册 2008-8-10
状态 离线
『楼 主』:  [已结]逐行读取记事本A,把已读取的行删除,并保存为B

求一个批处理脚本,需要实现下面的功能,请高手不吝赐教哦,谢谢大家。
在与批处理同一目录下放置A.txt,内容为分行的一些序列,数量约1万个。
如:
d45610ad
44cdfjad
4410.874
78910a4d
.......

现在想逐行读取其内容,把读取到的内容输出为变量%str%,同时,把已读取的行从A.txt中删除,并将已读取的行输出为B.txt。
在这个过程中,每运行一次脚本,A.txt就减少一行,B.txt就增加一行。

DOS命令我实在很菜,但我觉得使用DOS执行这样的功能应该比较现实。
再次谢谢大家!:P

[ Last edited by HAT on 2008-11-12 at 21:36 ]

2008-11-12 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 2 楼』:  


@echo off
for /f "delims=" %%a in (A.txt) do (
  set str=%%a
  more +1 A.txt > A_tmp.txt
  move /y A_tmp.txt A.txt
  echo %%a >> B.txt
  goto out
)

:out

echo 变量 str 的值为:
echo.
echo %str%
echo.
pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-11-12 21:36


2008-11-12 13:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jajah
新手上路





积分 10
发帖 6
注册 2008-8-10
状态 离线
『第 3 楼』:  

非常感谢tireless提供的脚本,测试成功了!

2008-11-12 21:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jajah
新手上路





积分 10
发帖 6
注册 2008-8-10
状态 离线
『第 4 楼』:  

再问一下,如何使用random命令产生出N个不会重复的序列呢?
我产生10个随机序列,重复的机率很小,但如果产生上万个同格式的序列则会有1%左右的号是重复的。请问如何避免呢?
@echo off&Setlocal Enabledelayedexpansion
set "var=0123456789abcdef"
for /l %%i in (1 1 8) do (
   set /a "n=!random!%%16"
   call set "str=!str!%%var:~!n!,1%%"
   if %%i equ 4 set "str=!str!-"
)

2008-11-12 21:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: