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

TOP

batcher真敬业啊,整天都在论坛,不歇息的

TOP

没有删除,经常用“move 临时文件 目标文件”来达到“del 目标文件&ren 临时文件 目标文件”的效果,省时省力效果好。

TOP

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

TOP

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

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

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

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

返回列表