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

回复 11楼 的帖子

多谢batman兄的指点
第一个问题确实那样要好点。第二个问题没考虑到那么多,看到你范文前面是全角空格就当成全角空格了,考虑你说的情况加入delims分隔符集就可以了,论坛会把TAB变空格,我6楼就不改了。
问题三是关键,也是核心算法的问题,echo|findstr 这种方式实属无奈之举,我实在没有想到其他方法了,除开用临时文件的方法我暂时没想到怎么用if去判断。
期待大家完善的代码。。。

TOP

回复 6楼 的帖子

赞扬的话就不说了,下面提出本人的建议:
1、for /f "delims=" %%a in ('findstr/n ".*" a.txt')是否改为for /f "tokens=1* delims=:" %%a in ('findstr/n ".*" a.txt'),
而后面直接set "str=%%b"更为好一点?
2、for /f "tokens=* delims= " %%b in ("!str!") 此处欠妥,因为在行首有英文空格、汉字空格和tab三种情况,兄
弟只考虑了一种情况是不够的,同时如在文本正文中也有这三种字符呢?
3、用echo|findstr判断效率不如if判断。
4、书写确实存在一定的问题,代码可读性要加强。

[ 本帖最后由 batman 于 2009-8-11 00:46 编辑 ]
***共同提高***

TOP

回复 9楼 的帖子

呵呵,回过头一看,我估计是batman兄在编辑帖子时我刚好发了贴。所以楼数不对了。(*^__^*)

TOP

我7楼的贴子是说的5楼的,已修改。。。
***共同提高***

TOP

回复 7楼 的帖子

回复batman兄,你可能没有测试代码,你说得情况都判断了的,只是代码效率不高
这是算法的问题了
至于书写贴上来是不规范了,我在计算机上看还可以。对于代码的缩进我目前也只是看着大家的代码凭感觉,没这方面的知识。

TOP

呵呵,从5楼的代码编写的思路就可以看出有以下几点不足:
   1、for默认是忽略空行的,代码首先就没有考虑到空行的输出;
   2、代码也没有对分段点和英文字符及中文字符进行判断;
   3、代码没有对每段的行首原有的空格进行有效处理;
   4、最后一个goto :eof是多余的;
   5、代码书写不规范。
   最后,希望兄弟继续努力,你的批处理水平将会越来越高的。

[ 本帖最后由 batman 于 2009-8-11 00:29 编辑 ]
***共同提高***

TOP

哎,始终是效率问题,特殊字符也麻烦
  1. @echo off&setlocal enabledelayedexpansion
  2. ::下面设置每行显示的字节数
  3. set/a num=60
  4. set/a s=num/2-1
  5. for /l %%i in (1,1,%num%) do set "sign=!sign!."
  6. for /f "delims=" %%a in ('findstr/n ".*" a.txt') do (
  7. set "str=%%a"&set "str=!str:*:=!"
  8. if defined str for /f "tokens=* delims= " %%b in ("!str!") do set "str=  %%b"
  9. if defined str (set/a n=%s%&call :check) else echo/
  10. )
  11. pause>nul&exit
  12. :check
  13. if not defined str goto :eof
  14. set/a n+=1,m=n+1
  15. set var=!str:~,%n%!
  16. echo/%var%|findstr "%sign%" >nul 2>nul&&(
  17. set str=!str:~%n%!&echo/%var%&set/a n=%s%&goto check)||(
  18. if "!var!" equ "!str:~,%m%!" (echo/%var%&goto :eof) else goto check
  19. )
复制代码
1

评分人数

    • batman: 考虑问题欠全面PB + 8

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in (a.txt) do call :loop %%a
  3. pause>nul&goto :eof
  4. :loop
  5. set "s=    %1"&set i=34
  6. :again
  7. call set n=%%s:~0,!i!%%&echo !n!>>b.txt&call set m=%%s:!n!=%%
  8. set x=!m:~30,1!&(if not "!x!"=="" (set i=30&set s=!m!&goto again) else echo !m!>>b.txt)
  9. echo.>>b.txt
  10. goto :eof
复制代码
不知道这样符不符合题意……
1

评分人数

    • batman: 为积极参与加分PB + 2
Still with wax

TOP

命令框应该和鼠标结合的嘛~      输出后用鼠标复制。

额,要用生成的方法啊?淡定,淡定。。。。。。

TOP

呵呵,这次偏方玩得有点不对哦,请注意“生成文本如下”几个字。
***共同提高***

TOP

60个左右的字节


左右哦~   是你说的哦

我等到了下午,没想到还是没人回帖。来捧场了

我不是认真的,是为了找回以前认识你时的味道。玩偏方~

  1. @echo off&setlocal enabledelayedexpansion
  2. mode con cols=62 lines=25
  3. for /f "tokens=*" %%a in (text.txt) do (
  4.    set now=%%a
  5.    if "!now:~0,3!"=="   " (set "now=!now: =!")
  6.    set "now=  !now!"
  7.    echo,!now!
  8.    echo,
  9. )
  10. pause
复制代码

[ 本帖最后由 523066680 于 2009-8-10 18:00 编辑 ]

TOP

返回列表