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

第一题

  1. echo off
  2. :cc
  3. set ee=
  4. setlocal enabledelayedexpansion
  5. set "var=abdefg ABDEFG kmli KMLI socsd SOCSD pdxy PDXY nq NQ"
  6. set num=0
  7. :aa
  8. set /a num+=1
  9. set /a c=%random%%%10+0
  10. for /f "tokens=1-10 delims= " %%0 in ("%var%") do set "ff=%%%c%"
  11. if !num!==11 goto dd
  12. set "ee=!ee!!ff!"
  13. goto aa
  14. :dd
  15. set /a nm+=1
  16. echo !ee!>>a.txt
  17. if !nm!==10 goto mm
  18. goto cc
  19. :mm
  20. pause
复制代码
学海无涯

TOP

楼上直接指点吧

我新手,写代码难免有问题的,你是感觉我哪些地方用的不对吗?
学海无涯

TOP

第二题

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (b.txt) do set "d=%%i" & call :treat
  4. pause>nul
  5. :treat
  6. set m=0
  7. set "y="
  8. :cc
  9. set "e=!d:~%m%,6!"
  10. set "x=!d:~%m%,1!"
  11. set /a m+=1
  12. if "!e!"=="ABDEFG" set /a m-=1 & call set "y=%%d:!d:~%m%,6!=bathome%%" & set /a m+=1
  13. if "!x!"=="" goto dd
  14. goto cc
  15. :dd
  16. if "!y!"=="" (echo !d!>>bb.txt) else echo !y!>>bb.txt
  17. goto :eof
复制代码
学海无涯

TOP

关于echo %com%的问题

http://bbs.bathome.net/viewthrea ... amp;page=1#pid29527
当我还是个新手的时候就测试过这个问题了,尽管现在我还是新手,可惜当时就一个人指点明白了我当时的疑惑

作为直接取值如echo %%1 %%2 %%3必须是双%

但是作为变量赋值后的调用,赋值必须是单%

还有一个问题是echo %com% 的双%,尽管开启了变量延迟setlocal enabledelayedexpansion,但是我测试发现echo !com!这样的方式是错误的,只能echo %com%,至于为什么还有待高手指点
学海无涯

TOP

回复 58楼 的帖子

感谢指正!为什么要省去"delims= "这个呢?恩,还有个概念我有些模糊,就是开启延迟的时候,如何区分用!!还是%%

55楼的我测试的时候,是指定的b.txt    最后生成的是bb.txt    ,应该改成a.txt  生成 b.txt就对了

我是新手还望能多多指点
学海无涯

TOP

回复 60楼 的帖子

当时测试是没问题的,今天才发现最后重复了最后一行,现在想了半天了,也没想明白原因,我再想想
学海无涯

TOP

给我的感觉好像for在处理文本的时候总是预读一行,到最后一行它仍然预读下一行,结果下一行是空的,它就终止,可是我这个代码到最后那个if仍然满足条件结果就又重新指定了一遍了,是不是这个原因?
学海无涯

TOP

重写了个思路,为什么会出空格?

请大家给看看,指点一下
  1. @echo off
  2. del b.txt
  3. setlocal enabledelayedexpansion
  4. set var=bathome
  5. for /f "delims=" %%i in (a.txt) do set "d=%%i" & call :treat
  6. pause>nul & goto :eof
  7. :treat
  8. set m=0
  9. :cc
  10. set "f=!d:~%m%,1!"
  11. set "e=!d:~%m%,6!"
  12. if "%f%"=="" echo.>>b.txt & goto :eof
  13. if "%e%"=="ABDEFG" (set/p=%var%<nul>>b.txt & set /a m+=5) else (set/p=%f%<nul>>b.txt)
  14. set /a m+=1
  15. goto cc
复制代码


已经找到原因了,这样就好了 set/p=%var%<nul>>b.txt& set  /a m+=5
但是不明白为什么要把set/p=%var%<nul>>b.txt&这个&前面的空格去了才是对了,我以前总以为什么空开就是对的。。。。
学海无涯

TOP

返回列表