[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
感谢大家对本贴的关注,其实我出这道题目的根本目的在于充分开放大家的思路,
本来去除指定字符前的0字符最保险的方法就是逐字符判断法,但这种办法的效率
是可想而知的,一旦要处理的字符量巨大的话,将会损耗我们大量的时间,所以要
求大家针对具体问题找出简洁高效的解决方案。所以对于代码是否通用性强其实并
不是我们所要考虑的主要问题,而大家所讨论的焦点无疑放在了代码的通用性上,
我认为这就偏离了我们所要研究的核心(当然并不是说代码的通用性不重要),所
以请后面跟贴的朋友将讨论重心放在思路和技巧上。
***共同提高***

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (1.txt) do (
  3.     set v=%%i
  4.     if "!v:~0,1!"=="a" (echo !v!) else (
  5.     for /f "tokens=1,2 delims=a" %%j in ("%%i") do (
  6.         set str=%%j
  7.         set str=!str:0=!
  8.         echo !str!a%%k
  9. )))
  10. pause
复制代码
(*^_^*)

TOP

我的思路跟10楼batman的基本一样,可是处理上,还是batman更厉害!
关键是在处理a0000000这行,batman 直接判断以a为分割后第二字段是否为空,就直接解决问题了,佩服!!!
(*^_^*)

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%i in (1.txt) do (
  3. set str=%%i
  4. set str1=!str:*a=a!
  5. call set tmp=%%str:!str1!=%%
  6. if not "!tmp!"=="" (call set str0=%%tmp:0=%%) else set "str0="
  7. echo !str0!!str1!
  8. )
  9. pause
复制代码


补上。

[ 本帖最后由 inittab 于 2009-4-27 09:11 编辑 ]

TOP

没有if 不用for,只set 搞定,效率高,通用性:无特殊字符的各种情形均可通过。
  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do (
  3.    set "str=%%i"
  4.    setlocal enabledelayedexpansion
  5.    set "a=!str:*a=a!"
  6.    set "b=!a:0=!##
  7.    set str=!str:0=!##
  8.    call echo.%%str:!b!=!a!%%
  9.    endlocal
  10. )
  11. pause
复制代码

[ 本帖最后由 netbenton 于 2009-4-27 19:12 编辑 ]

TOP

  1. for /f "tokens=* delims=0" %%i in (1.txt) do echo %%i
复制代码
1

评分人数

TOP

ls看错题了。呵呵
我也看错。现在改正过来了。

TOP

题目出重了。

[ 新手习题] 批处理去除字符串前所有的0
http://www.bathome.net/thread-3086-1-2.html
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 38楼 的帖子

嗯,练功区的那个是重复的吧,晚了差不多半年时间呢。

本帖发表于 2008-8-1 22:37
彼帖发表于 2009-1-15 18:46
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 42楼 的帖子

什么叫“反驳”?大家都是因为爱好批处理才走到一起的,彼此切磋才能更快提高,何来反驳之谈?谁闲着没事去到处反驳?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我看错了题目,只去掉a前面紧挨着的0,难度大了很多。已经写出来,就贴在这里算了
  1. @echo off&setlocal enabledelayedexpansion
  2. set "var=a b c d e f g h i j k l m n o p q r s t u v w x y z"
  3. for /f %%a in (a.txt) do (
  4.     set str=%%a
  5.     for %%b in (%var%) do (
  6.         set "str=!str:%%b= %%b !"
  7.     )
  8.     for %%c in (!str!) do (
  9.         if defined s (
  10.             if !s! neq 0 (<nul set/p=!s!) else (
  11.                 if %%c neq a <nul set/p=!s!
  12.              )
  13.         )
  14.         set "s=%%c"
  15.     )
  16.     <nul set/p=!s!&echo/&set "s="
  17. )
  18. pause
复制代码

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,* delims=a" %%a in (a.txt) do (
  3.   if "%%b"=="" (set stt=%%a) else (set str=%%a & set stt=%%b)
  4.   set str=!str:0=!
  5.   echo.%str%a!stt!
  6. )
  7. pause
复制代码
好像测试版主给的另外一组数据也可以

没有想到顶了老帖子了,只是发现我的这个代码还是有点意思就发了。

[ 本帖最后由 sgaizxt001 于 2010-6-15 06:08 编辑 ]
努力学习,努力挣分

TOP

  1. @echo off&SetLocal EnableDelayedExpansion
  2. (For /f "tokens=1* delims=a" %%i in (1.txt) do (Set a=%%i
  3. Set b=!a:0=!
  4. echo !b!a%%j ))>2.txt
  5. pause
复制代码
本以为解决了,不过BatMan很坏,留了个陷阱——a0000000。

明天继续想想。

TOP

回复 9# pusofalse

这句怎么解释啊 。call echo   在这里是什么意思啊?
     call,echo.%%var:0=%%a%%str%%

TOP

求加分
  1. sed -e "s/^0*//" 1.txt
复制代码

TOP

返回列表