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

第一题 不知道符合不
  1. @echo off
  2. del /f /s /q "D:\BatHome" >nul
  3. for /f "delims=" %%i in ('dir /ad /b /s "D:\BatHome" ^|sort /r') do rd "%%i"
  4. rd "D:\BatHome"
  5. pause
复制代码
第二题 比较一下 wmic   wmic 虽然取名方便 对比效率还是不行  所以还是这样处理了
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in (D:\BatHome_User_List.txt) do set "$%%a=a"
  3. (for /f "skip=4 delims=" %%i in ('net user') do (
  4.     if defined str (
  5.        for /l %%j in (0 25 50) do (
  6.            for /f "tokens=*" %%a in ("!str:~%%j,25!") do (  
  7.                if not defined $%%~nxa echo %%~nxa
  8.                set #%%~nxa=a
  9.            )
  10.        )
  11.    )
  12.    set "str=%%i"
  13. ))>增加的用户.txt
  14. (for /f "tokens=*" %%a in (D:\BatHome_User_List.txt) do if not defined #%%~nxa echo %%~nxa)>减少的用户.txt
  15. pause
复制代码
上面账户名不含空格和特殊字符的 可以简化下
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in (D:\BatHome_User_List.txt) do set "$%%a=a"
  3. (for /f "skip=4 delims=" %%i in ('net user') do (
  4.      for %%j in (!str!) do (  
  5.            if not defined $%%~nxj echo %%~nxj
  6.            set #%%~nxj=a
  7.      )
  8.      set "str=%%i"
  9. ))>增加的用户.txt
  10. (for /f "tokens=*" %%a in (D:\BatHome_User_List.txt) do if not defined #%%~nxa echo %%~nxa)>减少的用户.txt
  11. pause
复制代码
第三题 偷点懒了 写着写着 代码怎么这么长 总想着在一个FOR里完成  不过效率还好 还应该算随机了
发现还是有重复 现在还没时间修改
换个随机性强点
  1. @echo off
  2. set "code1=0123456789"
  3. set "code2=abcdefghijklmnopqrstuvwxyz"
  4. set "code3=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  5. set "code4=`~!@$^&*()-\+|{}[];'<>,.?/"
  6. set /a num=1000
  7. setlocal enabledelayedexpansion
  8. for /L %%i in (0,1,9) do set #%%i=!code1:~%%i,1!&set #####%%i#=1&set "arr=!arr!#####%%i#"
  9. for /L %%i in (2,1,5) do (
  10. set s%%i=
  11. for /L %%j in (1,1,%%i) do set s%%i=1!s%%i!
  12. for /L %%j in (%%i,1,9) do set s%%i=!s%%i!0
  13. set s%%i=!s%%i!
  14. set /a n=10,i=j=1
  15. for /L %%j in (1,1,%%i) do set /a i*=n,j*=%%j,n-=1
  16. set /a lena_%%i=i/j,lenb_%%i=lena_%%i-22
  17. )
  18. for /L %%i in (2,1,5) do (
  19. set var=
  20. for /L %%a in (1,1,!lena_%%i!) do (
  21.          set "s=#####"
  22.          for /l %%b in (0 1 9) do if "!s%%i:~%%b,1!" == "1" set "s=!s!!#%%b!"
  23.          for /f %%b in ("0!s%%i:10= !") do set "t=%%b"
  24.        set "s%%i=!t:0=!!t:1=!1!s%%i:*10=!"
  25. set var=!var!!s:~-6!#
  26. )
  27. for /L %%a in (!lena_%%i!,-1,!lenb_%%i!) do (
  28. set /a "n=!random!%%%%a*7"
  29. for %%b in (!n!) do set "s=!var:~%%b,7!"
  30. for %%b in (!s!) do set var=!var:%%b=!
  31. set "arr=!arr!!s!"
  32. set "!s!=%%i"
  33. )
  34. )
  35. for /L %%i in (102,-1,3) do (
  36. set /a "n=!random!%%%%i*7,num+=1"
  37. for %%j in (!n!) do set "s=!arr:~%%j,7!"
  38. for %%j in (!s!) do set arr=!arr:%%j=!&set n1=!%%j!
  39.         set /a "n2=!random!%%(6-n1)+1,n3=!random!%%(7-n1-n2)+1,n4=8-n1-n2-n3"
  40. set s=!s:#=!
  41. for /L %%a in (2,1,4) do (
  42. for /L %%b in (1,1,!n%%a!) do (
  43. set /a m=!random!%%26,r=!random!%%n1,n1+=1
  44. for /f "tokens=1,2" %%c in ("!m! !r!") do set s=!s:~%%d!!code%%a:~%%c,1!!s:~,%%d!
  45. )
  46.     )
  47.         net user BatHome!num:~1! !s! /add 2>nul
  48. )
  49. pause
复制代码
第四题 这里处理成百分比吗
  1. @echo off&setlocal enabledelayedexpansion
  2. set "wmi=LastBootUpTime,LocalDateTime,TotalVisibleMemorySize,FreePhysicalMemory"
  3. for /f "delims=U" %%a in ('cmd /u /c echo 唉') do set "tab=%%a"
  4. (
  5. for /f "skip=1 tokens=1-4" %%i in ('"wmic os get %wmi%"') do for %%j in (%%j) do (
  6. set "ymd=%%j"
  7. set /a "m=(1!ymd:~4,2!+5)%%12+4,y=!ymd:~,4!-m/14,d=1!ymd:~6,2!-100,h=1!ymd:~8,2!-100"
  8. set /a "s=1461*y/4+153*m/5+d"
  9. set /a "s1=h*3600+(1!ymd:~10,2!-100)*60+1!ymd:~12,2!-100"
  10. set "ymd=%%k"
  11. set /a "m=(1!ymd:~4,2!+5)%%12+4,y=!ymd:~,4!-m/14,d=1!ymd:~6,2!-100,h=1!ymd:~8,2!-100"
  12. set /a "s=(1461*y/4+153*m/5+d-s)*86400-s1,s+=h*3600+(1!ymd:~10,2!-100)*60+1!ymd:~12,2!-100"
  13. set size=%%l
  14. set /a "useb=%%l-%%i,usebp=useb*100/%%l"
  15. for %%a in (size useb) do (
  16. set mod=!%%a!
  17. for /l %%b in (1 1 3) do (
  18. set/a "Qent=mod/1048576,mod=mod%%1048576*10"
  19. set "%%a_g=!%%a_g!!Qent!"
  20. )
  21. )
  22. echo 物理内存: !size_g:~,-2!.!size_g:~-2! [GB]
  23. echo 已使用  : !useb_g:~,-2!.!useb_g:~-2! [GB]
  24. echo 使用率  : !usebp!%%
  25. echo 系统运行时间 : !s! 秒
  26. )
  27. echo 盘符%tab%总容量    %tab%已用空间%tab%可用空间%tab%使用率
  28. set "get=get DeviceID^,FreeSpace^,Size"
  29. for /f "skip=1 tokens=1-3" %%a in ('wmic logicaldisk where "drivetype='3'" !get!') do (
  30. for %%b in (%%b) do (
  31. set $Free=%%b&set "$size=%%c"
  32. for %%i in (size Free) do (
  33. set Qent=&set/a "mod=!$%%i:~,9!%%1048576,%%i=!$%%i:~,9!/1048576"
  34. if "!$%%i:~9!" neq "" (
  35. set "len=!$%%i:~9!876543210"
  36. set /a "len=!len:~8,1!,Qent=!mod!!$%%i:~9!/1048576"
  37. set Qent=00000000!Qent!
  38. for %%j in (!len!) do set Qent=!Qent:~-%%j!
  39. )
  40. set "%%i=!%%i!!Qent!"
  41. )
  42. set /a "Tree=Size-Free,Treep=Tree*100/Size"
  43. for %%i in (Size Tree Free) do (
  44. set $%%i=&set mod=!%%i!
  45. for /l %%j in (1 1 3) do (
  46. set/a "Qent=mod/1024,mod%%=1024"
  47. set mod=!mod!0
  48. set "$%%i=!$%%i!!Qent!"
  49. )
  50. )
  51. echo %%a%tab%!$size:~,-2!.!$size:~-2! [GB]%tab%!$Tree:~,-2!.!$Tree:~-2! [GB]%tab%!$Free:~,-2!.!$Free:~-2! [GB]%tab%!Treep! %%
  52. )
  53. )
  54. )>D:\BatHome_OS.txt
  55. pause
复制代码
第五题 : 此类问题不熟悉 胡凑一个了
今天网友一问题 提醒了我 可能这题遗漏了一个计划任务
  1. @echo off
  2. for /f "skip=1" %%i in ('"wmic path Win32_LocalTime get DayOfWeek"') do for %%j in (%%i) do set "w=%%i"
  3. set /a "m=(w+6)%%7"
  4. set "bak1=D:\bbs.bathome\Week-Bak_%w%"
  5. for /L %%i in (0,1,%m%) do if exist "D:\bbs.bathome\Week-Bak_%%i\" set "bak2=D:\bbs.bathome\Week-Bak_%%i"
  6. if not defined bak2 set w=0
  7. (for %%i in (.zip .bak \logs\ \img\) do echo %%i)>EXCLUDE
  8. setlocal enabledelayedexpansion
  9. if %w% equ 0 (
  10.    rd /s /q "!bak1!" 2>NUL
  11.    xcopy "D:\www.bathome" "!bak1!" /E /H /R /I /Y /EXCLUDE:EXCLUDE >nul
  12. ) else (
  13. RD /S /Q "!bak1!" 2>NUL
  14. xcopy "!bak2!" "!bak1!" /E /H /R /I /Y >NUL
  15. (xcopy "D:\www.bathome" "!bak1!" /E /H /R /Y /I /D /EXCLUDE:EXCLUDE)>"!bak1!.log"
  16. )
  17. del EXCLUDE 2>NUL
  18. pause
复制代码
第六题
正好原来有个处理大数的 但不处理小数和负数
修改一下 一般测试过
第7行的 set "d=" 应该为 set "d=0" 唉 初始代码就这样 不知怎的改成空值了
修正
  1. @echo off&setlocal enabledelayedexpansion
  2. REM 被除数 和 除数
  3. set str1=123.01
  4. set str2=-33.47
  5. rem 小数点后位数
  6. set u=100
  7. set "d=0"
  8. for %%i in (str1 str2) do if "!%%i:~,1!" == "-" set /a d+=1
  9. if %d% equ 1 (set "d=-") else set "d="
  10. set l=00000000&for /l %%i in (1 1 7) do set "l=!l!!l!"
  11. set "var=4096 2048 1024 512 256 128 64 32 16 8 4 2 1"
  12. for /l %%i in (1 1 2) do (
  13. set "s%%i=!str%%i:-=!"
  14. set "len%%i=0"
  15. for /F "tokens=2 delims=." %%a in ("!s%%i!") do (
  16. set s=%%a&set len%%i=1
  17. for %%b in (%var%) do if "!S:~%%b!" neq "" set/a len%%i+=%%b&set "S=!S:~%%b!"
  18. )
  19. set s%%i=!s%%i:.=!
  20. )
  21. set /a len=len1-len2
  22. if !len1! gtr !len2! (set "s2=!s2!!l:~,%len:-=%!") else set "s1=!s1!!l:~,%len:-=%!"
  23. for /l %%a in (1 1 2) do (
  24. for /f "tokens=* delims=0" %%i in ("!s%%a!") do set s=%%i&set "s%%a=0%%i"
  25. set len%%a=1
  26. for %%j in (%var%) do if "!S:~%%j!" neq "" set/a len%%a+=%%j&set "S=!S:~%%j!"
  27. )
  28. set sun=!l:~-%len2%,-%len1%!
  29. set /a len=len2+1
  30. if "!s1!" Lss "!s2!" (
  31. set s1=!s1:~1!
  32. if !len1! leq !len2! set sun=!sun!0
  33. set /a Len1-=1
  34. )
  35. set "s1=!s1!!l:~,%u%!"
  36. set "s=!s1:~,%len2%!"
  37. set "i=!l:~,7!!s2!"
  38. set /a Len_i=Len2+7,len1+=u
  39. if %u% leq 0 set "u="
  40. if !len1! geq !len2! (
  41. for /l %%i in (1 1 9) do (
  42. set "T=0"
  43. for /l %%j in (8 8 !Len_i!) do (
  44. set /a "T=1!i:~-%%j,8!*%%i+T"
  45. set Num%%i=!T:~-8!!Num%%i!&set /a "T=!T:~,-8!-%%i"
  46. )
  47. set "Num%%i=!T!!Num%%i!"
  48. set "Num%%i=!l:~,7!!Num%%i:~-%Len%!"
  49. )
  50. for /L %%a in (!len2! 1 !Len1!) do (
  51. set "s=!L!!s!!s1:~%%a,1!"
  52. set "s=!s:~-%Len%!"
  53. if "!s!" geq "!s2!" (
  54. set M=5&set "i=!l:~,7!!s!"
  55. if "!i!" geq "!Num5!"  (
  56. for /l %%i in (6 1 9) do if "!i!" geq "!Num%%i!" set "M=%%i"
  57. ) else for /l %%i in (1 1 4) do if "!i!" geq "!Num%%i!" set "M=%%i"
  58. set sun=!sun!!M!&set s=&set T=0
  59. for %%i in (!M!) do (
  60. for /l %%j in (8 8 !Len_i!) do (
  61. set /a "T=3!i:~-%%j,8!-1!Num%%i:~-%%j,8!-!T:~,1!%%2"
  62. set "s=!T:~1!!s!"
  63. )
  64. )
  65. ) else set sun=!sun!0
  66. )
  67. if defined u (set "sun=%d%!sun:~,-%u%!.!sun:~-%u%!")else set sun=%d%!sun!
  68. ) else if defined u (set "sun=%d%0.!l:~,%u%!") else set sun=%d%0
  69. echo !str1! / !str2!  =  !sun!
  70. pause>nul
复制代码
第七题
不确定总系列 还是分类系列 增加个判断吧
  1. @echo off
  2. Rem set /p "url=请输入地址:"
  3. Rem 测试地址1 风景壁纸
  4. Rem set "url=http://www.zhuoku.com/zhuomianbizhi/show/index-1.htm"
  5. Rem 测试地址2 风景壁纸之一  托斯卡纳草原 风光风景宽屏壁纸
  6. set "url=http://www.zhuoku.com/zhuomianbizhi/show-fengjingou/20130731145032.htm"
  7. set "seda=/value=index-/s/.* value=index-([0-9]+).*/\1/p"
  8. set "sedb=s#href=\x22| *class=#\nhttp://www.zhuoku.com#gp"
  9. set "sedc=/\"yema\"/s/.*>\[*([0-9]+)\]*<.*/\1/gp"
  10. set "sedd=/thunder_url/s#.*= *\"(http://.*\.jpg)\";.*#\1#p"
  11. set "wu=http://www.zhuoku.com"
  12. setlocal enabledelayedexpansion
  13. if "!url:/index-=!" neq "!url!" (
  14. for %%i in ("!url!") do set "wurl=!url:%%~nxi=!"
  15. for /f %%j in ('wget -q -O- !url! ^| sed -nr  "!seda!"') do (
  16. (for /l %%j in (1 1 %%j) do echo !wurl:\=/!index-%%j.htm)>url.x
  17. wget -q -O- -i url.x | sed -nr "!sedb!" |sed -nr "s/\.htm\x22$//p" >url.y
  18. )
  19. ) else echo !url!|sed -nr "s/\.htm//p" >url.y
  20. (for /f "tokens=*" %%i in (url.y) do (
  21. for /f %%j in ('wget -q -O- "%%i(1).htm" ^| sed -nr "!sedc!"') do (
  22. for /l %%k in (1 1 %%j) do echo %%i(%%k^).htm
  23. )
  24. ))>url.x
  25. wget -q -O- -i url.x |sed -nr "!sedd!" >url.y
  26. wget -m -q -nH -np --referer="http://www.zhuoku.com" -i url.y
  27. del url.x url.y
  28. pause
复制代码
第八题 修改下  还是去掉临时文件了 效率相差不大
  1. @echo off&setlocal enabledelayedexpansion
  2. %1(for /f "tokens=2" %%i in ('%~s0 Rem ^|sort') do echo %%i)&pause&exit
  3. set "t=零壹贰叁肆伍陆柒捌玖"
  4. set 仟=10&for %%i in (拾 佰) do set %%i=!仟!&set "仟=!仟!0"
  5. set 分=1&set "角=10"
  6. for /f %%a in (a.txt) do (
  7.         set str=%%a
  8.         for /l %%i in (1 1 9) do (
  9.                 for %%j in (!t:~%%i^,1!) do set "str=!str:%%j=%%i!"
  10.         )
  11.         for /f "tokens=1* delims=圆" %%i in ("!str:零=!") do (
  12. if "%%j" neq "" (
  13. set $a=%%i&set "$b=%%j"
  14. ) else set $a=0&set "$b=%%i"
  15. )
  16.         for %%j in (角 分) do set "$b=!$b:%%j=*%%j+!"
  17.         set /a $b=!$b!+100,$=0
  18.         if "!$a!" == "!$a:万=!" (set i=1) else set i=10000
  19. for %%i in (!$a:万^= !) do (
  20.                set "$a=%%i"
  21. for %%j in (拾 佰 仟) do set "$a=!$a:%%j=*%%j+!+0"
  22. set /a "$+=(!$a!)*i"
  23. set i=1
  24.         )
  25.         set $=00000000!$!.!$b:~-2!
  26.         echo !$:~-11! %%a
  27. )
复制代码
第九题
最终用了 FC 比较 方案
这里取一个文件比较    多几个文件做比较 也许效率看提升点
  1. @echo off
  2. SET PH=f:
  3. dir /s /a-d /o:n %PH% >dir_a.t
  4. (for /f "skip=2 tokens=*" %%i in (dir_a.t) do (
  5.         set "str=%%i"
  6.         setlocal enabledelayedexpansion
  7.         if exist "!str:~,-4!\" (
  8.                 for /f "tokens=*" %%j in ("!str:~,-4!") do endlocal&set "files=%%j"
  9.         ) else  endlocal&for /f "tokens=1-3*" %%a in ("%%i") do if "%%b%%d" == "个文件字节" (
  10.                 setlocal enabledelayedexpansion
  11.                 for /f "tokens=1-3*" %%a in ("%%i") do echo !file!:%%a:!files!
  12.                 endlocal
  13.         ) else set "file=%%d"
  14. ))>dir_b.t
  15. findstr /ibv ":" dir_b.t|sort >dir_a.t
  16. set /a i=n=1
  17. for /f "tokens=1-2* delims=:" %%a in (dir_a.t) do (
  18.         set "str=%%a:%%b"
  19.         setlocal enabledelayedexpansion
  20.         if /i "!s!" neq "!str!" (
  21.                 if !i! gtr 1 set /a n+=1
  22.                 set i=1
  23.         ) else set /a "i+=1"
  24.         for /f "tokens=1,2" %%i in ("!n! !i!") do endlocal&set n=%%i&set i=%%j&set _%%i=%%j&set "%%i_%%j=%%c"
  25.         set "s=%%a:%%b"
  26. )
  27. setlocal enabledelayedexpansion
  28. (for /l %%i in (1 1 %N%) do (
  29.         for /l %%a in (1 1 !_%%i!) do (
  30.                 for /f "tokens=*" %%m in ("!%%i_%%a!") do (
  31.                         set /a i=%%a+1
  32.                         dir /b /a-d /on "!%%i_%%a!" >dir_a.t
  33.                         for /l %%b in (!i! 1 !_%%i!) do (
  34.                                 for /f "tokens=*" %%n in ("!%%i_%%b!") do (
  35.                                         dir /b /a-d /on "!%%i_%%b!" >dir_b.t
  36. fc /c dir_a.t dir_b.t>nul&&(
  37. for /f "tokens=*" %%o in ("!%%i_%%a!") do (
  38.                                                         echo !%%i_%%a!&type dir_a.t&echo;
  39.                                                         set %%i_%%a=
  40.                                                 )
  41.                                                 echo !%%i_%%b!&type dir_b.t&echo;
  42.                                                 set %%i_%%b=
  43. )
  44.                                 )
  45.                         )
  46.                 )
  47.         )
  48. ))>dir_list.txt
  49. del dir_a.t dir_b.t
  50. start "" dir_list.txt
  51. pause
复制代码
findstr 搜索 方案
相对FCf方案来说  FINDSTR 搜索字符有限制外  还有FINDSTR还有字符串搜索问题
用FIND 替换 FINDSTR 可以解决 但效率
  1. @echo off
  2. SET PH=f:
  3. dir /s /a-d /o:n %PH% >dir_a.t
  4. (for /f "skip=2 tokens=*" %%i in (dir_a.t) do (
  5. set "str=%%i"
  6. setlocal enabledelayedexpansion
  7. if exist "!str:~,-4!\" (
  8. for /f "tokens=*" %%j in ("!str:~,-4!") do endlocal&set "files=%%j"
  9. ) else  endlocal&for /f "tokens=1-3*" %%a in ("%%i") do if "%%b%%d" == "个文件字节" (
  10. setlocal enabledelayedexpansion
  11. for /f "tokens=1-3*" %%a in ("%%i") do echo !file!:%%a:!files!
  12. endlocal
  13. ) else set "file=%%d"
  14. ))>dir_b.t
  15. findstr /ibv ":" dir_b.t|sort >dir_a.t
  16. set /a i=n=1
  17. for /f "tokens=1-2* delims=:" %%a in (dir_a.t) do (
  18. set "str=%%a:%%b"
  19. setlocal enabledelayedexpansion
  20. if /i "!s!" neq "!str!" (
  21. if !i! gtr 1 set /a n+=1
  22. set i=1
  23. ) else set /a "i+=1"
  24. for /f "tokens=1,2" %%i in ("!n! !i!") do endlocal&set n=%%i&set i=%%j&set _%%i=%%j&set "%%i_%%j=%%c"
  25. set "s=%%a:%%b"
  26. )
  27. setlocal enabledelayedexpansion
  28. (for /l %%i in (1 1 %N%) do (
  29. for /l %%a in (1 1 !_%%i!) do (
  30. for /f "tokens=*" %%m in ("!%%i_%%a!") do (
  31. set /a i=%%a+1
  32. dir /b /a-d "!%%i_%%a!" >dir_a.t
  33. for /l %%b in (!i! 1 !_%%i!) do (
  34. for /f "tokens=*" %%n in ("!%%i_%%b!") do (
  35. dir /b /a-d "!%%i_%%b!" >dir_b.t
  36. findstr /ivxg:dir_a.t dir_b.t>dir_c.t>nul||findstr /ivxg:dir_b.t dir_a.t>nul||(
  37. for /f "tokens=*" %%o in ("!%%i_%%a!") do (
  38.                                                  echo !%%i_%%a!&type dir_a.t&echo;
  39. set %%i_%%a=
  40. )
  41. echo !%%i_%%b!&type dir_b.t&echo;
  42. set %%i_%%b=
  43. )
  44. )
  45. )
  46. )
  47. )
  48. ))>dir_list.txt
  49. del dir_a.t dir_b.t
  50. start "" dir_list.txt
  51. pause
复制代码
第九题 增加一个临时文件方案3 如文件夹数量大的情况 增加个临时文件
  1. @echo off
  2. SET PH=f:
  3. dir /s /a-d /o:n %PH% >dir_a.t
  4. (for /f "skip=2 tokens=*" %%i in (dir_a.t) do (
  5.         set "str=%%i"
  6.         setlocal enabledelayedexpansion
  7.         if exist "!str:~,-4!\" (
  8.                 for /f "tokens=*" %%j in ("!str:~,-4!") do endlocal&set "files=%%j"
  9.         ) else  endlocal&for /f "tokens=1-3*" %%a in ("%%i") do if "%%b%%d" == "个文件字节" (
  10.                 setlocal enabledelayedexpansion
  11.                 for /f "tokens=1-3*" %%a in ("%%i") do echo !file!:%%a:!files!
  12.                 endlocal
  13.         ) else set "file=%%d"
  14. ))>dir_b.t
  15. findstr /inbv ":" dir_b.t >dir_a.t
  16. (for /f "tokens=1-3* delims=:" %%a in (dir_a.t) do (
  17. if not defined $%%a (
  18. dir /b /a-d /on "%%d" >dir_b.t
  19. set flag=a
  20. findstr /ic:":%%b:%%c:" dir_a.t>$
  21. for /f "tokens=1-3* delims=:" %%A in ($) do (
  22. if %%A gtr %%a (
  23. if not defined $%%A (
  24. dir /b /a-d /on "%%D" >dir_c.t
  25. fc /c /L dir_b.t dir_c.t>nul&&(
  26. if defined flag set flag=&echo %%d&type dir_b.t&echo;
  27. echo %%D&type dir_c.t&echo;
  28. set $%%A=a
  29. )
  30. )
  31. )
  32. )
  33. )
  34. ))>dir_list.txt
  35. del $ dir_a.t dir_b.t dir_c.t 2>nul
  36. start "" dir_list.txt
  37. pause
复制代码
第十题
  1. @echo off
  2. findstr /ivx "图[0-9]*\.[0-9]*" a.txt>_temp.t
  3. findstr /ivx "图[0-9]*\.[0-9]*、.*图[0-9]*\.[0-9]*" _temp.t>html.txt
  4. set "sp=&nbsp;&nbsp;&nbsp;&nbsp;"
  5. set "br=<br />"
  6. set "ims=一二三四五六七八九十百  "
  7. (findstr /ib "<[^/]" %~s0
  8. for /f "delims=" %%i in ('findstr /in .* html.txt') do (
  9. set "str=%%i"
  10. setlocal enabledelayedexpansion
  11.         set "str=!str:*:=!"
  12. if defined str (
  13. for /f "tokens=1,2 delims=%ims%" %%a in ("!str!") do (
  14. if "%%a%%b" == "第章"  (
  15. if "!str:~,2!" == "第章" (
  16. echo;!br!!sp!!str!!br!
  17. ) else echo;!sp!!str!!br!
  18. ) else echo;!sp!!str!!br!
  19. )
  20. ) else echo !br!
  21. endlocal
  22. )
  23. findstr /ib "</" %~s0
  24. )>a.html
  25. del html.txt _temp.t
  26. exit
  27. <html>
  28. <body>
  29. </body>
  30. </html>
复制代码

TOP

回复 15# 523066680
也郁闷

TOP

回复 20# DAIC
首先谢测试
也谢测试本人六题代码的所有人
请将代码第七行    set "d=" 改为  set "d=0" 试下

TOP

回复 25# PowerShell

首先感谢测试 关于测试代码生成的文件 大小一样目录不一样的问题 可能是因为代码判断的不同
其中用FINDSTR 的代码可能会遇特殊字符时和搜索字符长度相关时会有问题
用FC应该没此类问题 此前有说明的
再次感谢测试
也来感谢斑竹!感谢管理员!

TOP

返回列表