[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样定时写入一行到第一行并删除最后一行?

A。TXT    B。TXT  2个文本
A内容是:
<a href="/xuexi.html">xuexi</a>&nbsp;
<a href="/xx.html">xx</a>&nbsp;


B内容是:
<a href="/1.html">1</a>&nbsp;
<a href="/2.html">2</a>&nbsp;
<a href="/3.html">3</a>&nbsp;
<a href="/4.html">4</a>&nbsp;

每隔N 秒  从B文件内    随机拿一条数据    放到 A文件的第一行  并删除A的最后一行
如取的是第3行 就得到A:
<a href="/3.html">3</a>&nbsp;
<a href="/xuexi.html">xuexi</a>&nbsp;

望知道的朋友帮忙 谢谢

不能排除空行是因为楼上把用于纠错的部分改没了:
...
     if defined c echo;C的值是:!c:~1!
...
        set "c=@%%a"
...
这样可以避免当%%a为空时,c变量被赋了空值
zm900612 发表于 2011-3-31 22:42

这个我知道,我测试空行时是直接复制你的代码的。呵呵......

TOP

12# zm900612
还不如原来的呢,我想白素贞做鬼都不会放过你的。呵呵
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

不能排除空行是因为楼上把用于纠错的部分改没了:
...
     if defined c echo;C的值是:!c:~1!
...
        set "c=@%%a"
...
这样可以避免当%%a为空时,c变量被赋了空值

TOP

不能排除空行是因为楼上把用于纠错的部分改没了:
...
     if defined c echo;C的值是:!c:~1!
...
        set "c=@%%a"
...
这样可以避免当%%a为空时,c变量被赋了空值

TOP

我用下面这段代码测试了一下
  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "delims=" %%a in (A.txt) do (echo A的值是:%%a
  3.         if defined c echo;C的值是:!c!
  4. pause
  5.         set "c=%%a"
  6. )
  7. echo;C的值是:!c!
  8. pause
复制代码
才知道为什么可以做到少一行的效果。但是还不能处理空格。

TOP

是否我方法不对?还是不能处理空格呀......

TOP

修正了一处,却漏了另一处...已修正

TOP

呵呵,我测试了一下,好像还是不能处理空行呀。我的是xp sp3

TOP

非常感谢!......

TOP

本帖最后由 zm900612 于 2011-3-31 17:17 编辑

其实不需要伤筋动骨,只是一个忽略A.txt空行的小bug,修正一下就好:
  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "delims=" %%a in (B.txt) do set/a a+=1&set #!a!=@%%a
  3. :A
  4. set c=&set/a b=%random%%%a+1
  5. (echo;!#%b%:~1!
  6. for /f "delims=" %%a in (A.txt) do (
  7.         if defined c echo;!c:~1!
  8.         set "c=@%%a"
  9. )
  10. )>$
  11. move $ A.txt
  12. >nul ping 127.1 -n 5
  13. goto:A
复制代码
特殊字符的问题没什么好办法,因为%%a的预处理是在变量延迟之前的,所以如果%%a的值中含!会出错,要避免这个bug需要以严重降低效率为代价,所以将就吧。

TOP

哦,了解。空行和特殊字符都可以处理吗?如果zm900612兄方便又有空的话,能否就修改一下,重新搞个代码?谢谢!

TOP

其实那段代码有bug,没考虑空行...不过可以给c变量的内容加个前缀,再用变量偏移简单解决
这头像真的那么恶心吗...好吧,那我换个吧

TOP

哦,谢谢zm900612的耐心解答,但我貌似还不大明手白。
还有小声说一句,能不能换个头像?呵呵......

TOP

哦,我会错意了...
他是先输出变量c,把整行内容都设为变量c,这样变量c始终是上一行的内容:
        if defined c echo;!c!
        set "c=%%a"

TOP

返回列表