[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 qzwqzw 于 2010-4-20 22:16 发表
孤星的代码看的头大
大概明白那句两层嵌套的for/l是什么意思了
就我的看法
这种场合下使用嵌套for/l
不能做到完全随机选取图片
不如使用for/l+set !random!
for /l %%i in (1,,%ye_Fl%)  do (
    set /a i_bg=!random! %% %ye_BG% + 1
    call set BG=%%BG_!i_bg!%%
    ...
    >>"!gu!\Desktop.ini" echo.IconArea_Image=!BG!
)

图片的乱序排列在标签:han中完成的,所以for /l里就可以按顺序读了。
至于用双for /l嵌套是因为他要求,要循环完所有图片一次,才能再开始第二次。显然这里!random!就不合适了。因为他把这个要求写到另要一个帖子里了http://bbs.bathome.net/thread-7691-1-2.html,你没看到,哈哈。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

发觉寒夜兄的毛病,   一句批处理, 只要能用复合语连起来, 就会连得老长,  打死也不肯分行,   给别人造成了阅读困难.

  所以十五楼兄台没一下看全哈哈,   
           

              而寒夜兄的毛病我也有,而且一样严重, 所以我看清了○( ̄﹏ ̄)○
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

至此 终于结贴了。。谢谢各位的帮助 特别是寒星

这里发一个成品 谢谢大家 可以测试下     一切操作可逆 不会影响电脑      图片可以自己添加     推荐使用 快速 版本

这里就把成品给大家发出来

下载链接

http://www.uushare.com/user/gkass/file/2909732

下面是附件说明
  1. 运行文件夹里的 !)生成.bat 即可在全盘文件夹里显示图片
  2. 运行过程切勿关闭运行窗口。
  3. 一切操作都是可逆的。
  4. 当不想要显示图片的时候 再运行一次 !)生成.bat 或者 !)删除.bat 即可
  5. 至于 !)快速.bat 是后面添加的  只搜索到1层目录
  6. 速度当然会很快 而且对系统的稳定不会有影响了
复制代码
华丽的分割线。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
===============================================================================================

下面贴上成品的批处理内容
  1. !)快速.bat
  2. @echo off&setlocal enabledelayedexpansion
  3. if exist "勿删.txt" (goto back) else (goto start)
  4. :back
  5. cls
  6. echo 现在开始删除生成的文件,操作期间一定不要关闭本窗口。
  7. echo 如本机文件夹过多的话,操作的时间就会较长,请耐心等待。谢谢!
  8. for /f "delims=" %%a in (勿删.txt) do if exist "%%a"desktop.ini del /f /a /q "%%a"desktop.ini & attrib -s %%a
  9. for /f "delims=" %%i in (勿删.txt) do if exist %%i\desktop.ini del /f /a /q %%i\desktop.ini & attrib -s %%i
  10. del /f /q /a 勿删.txt
  11. goto xing
  12. :start
  13. cls
  14. echo 如本机文件夹过多的话,操作的时间就会较长,请耐心等待。谢谢!
  15. for /f "skip=4" %%a in ('mountvol ^| find ":"') do if not exist %%a\desktop.ini echo %%a>>勿删.txt
  16. for /f "skip=4" %%i in ('mountvol ^| find ":"') do (for /f "delims=" %%j in ('dir /b /ad "%%i" 2^>nul') do if not exist %%i\desktop.ini echo "%%i%%j">>勿删.txt)
  17. for /f "delims=" %%i in ('dir /a /b /s "*.PNG"') do call:han "%%~fi"
  18. for /F "tokens=1,2* delims==:" %%i in ('set han_^|findstr /n .*') do set "BG_%%i=%%k"&set ye_BG=%%i
  19. for /f "delims=" %%i in (勿删.txt) do set "xing_%%~i=="
  20. for /F "tokens=1,2* delims==:_" %%i in ('set xing_^|findstr /n .*') do set a=%%k&set "Fl_%%i=!a:~0,-2!"&set ye_Fl=%%i
  21. for /l %%i in (1,%ye_BG%,%ye_Fl%) do for /l %%j in (1,1,%ye_BG%) do set/a "gu=%%i-1+%%j"&call set "gu=%%Fl_!gu!%%"&if not defined gu (goto :xing) else (attrib +s "!gu!"
  22. >>"!gu!\Desktop.ini" echo.[{BE098140-A513-11D0-A3A4-00C04FD706EC}]
  23. >>"!gu!\Desktop.ini" echo.IconArea_Image=!BG_%%j!
  24. attrib +s +h +r "!gu!\Desktop.ini"
  25. )
  26. :xing
  27. exit
  28. :han
  29. set han=%random%%random%%random%
  30. if "!han_%han%!"=="" (set "han_%han%=%~1") else goto:han
复制代码
  1. !)生成.bat
  2. @echo off&setlocal enabledelayedexpansion
  3. if exist "勿删.txt" (goto back) else (goto start)
  4. :back
  5. cls
  6. echo 现在开始删除生成的文件,操作期间一定不要关闭本窗口。
  7. echo 如本机文件夹过多的话,操作的时间就会较长,请耐心等待。谢谢!
  8. for /f "delims=" %%a in (勿删.txt) do if exist "%%a"desktop.ini del /f /a /q "%%a"desktop.ini & attrib -s %%a
  9. for /f "delims=" %%i in (勿删.txt) do if exist %%i\desktop.ini del /f /a /q %%i\desktop.ini & attrib -s %%i
  10. del /f /q /a 勿删.txt
  11. goto xing
  12. :start
  13. cls
  14. echo 如本机文件夹过多的话,操作的时间就会较长,请耐心等待。谢谢!
  15. for /f "skip=4" %%a in ('mountvol ^| find ":"') do if not exist %%a\desktop.ini echo %%a>>勿删.txt
  16. for /f "skip=4" %%i in ('mountvol ^| find ":"') do (for /f "delims=" %%j in ('dir /s /b /ad "%%i" 2^>nul') do if not exist %%j\desktop.ini echo "%%j">>勿删.txt)
  17. for /f "delims=" %%i in ('dir /a /b /s "*.PNG"') do call:han "%%~fi"
  18. for /F "tokens=1,2* delims==:" %%i in ('set han_^|findstr /n .*') do set "BG_%%i=%%k"&set ye_BG=%%i
  19. for /f "delims=" %%i in (勿删.txt) do set "xing_%%~i=="
  20. for /F "tokens=1,2* delims==:_" %%i in ('set xing_^|findstr /n .*') do set a=%%k&set "Fl_%%i=!a:~0,-2!"&set ye_Fl=%%i
  21. for /l %%i in (1,%ye_BG%,%ye_Fl%) do for /l %%j in (1,1,%ye_BG%) do set/a "gu=%%i-1+%%j"&call set "gu=%%Fl_!gu!%%"&if not defined gu (goto :xing) else (attrib +s "!gu!"
  22. >>"!gu!\Desktop.ini" echo.[{BE098140-A513-11D0-A3A4-00C04FD706EC}]
  23. >>"!gu!\Desktop.ini" echo.IconArea_Image=!BG_%%j!
  24. attrib +s +h +r "!gu!\Desktop.ini"
  25. )
  26. :xing
  27. exit
  28. :han
  29. set han=%random%%random%%random%
  30. if "!han_%han%!"=="" (set "han_%han%=%~1") else goto:han
复制代码
  1. !)删除.bat
  2. @echo off&setlocal enabledelayedexpansion
  3. echo 如本机文件夹过多的话,操作的时间就会较长,请耐心等待。谢谢!
  4. echo 显示的错误也属于正常的,不必担心本操作失误造成系统出现问题。
  5. echo 运行窗口一定不要关闭,切记。
  6. del /f /q /a 勿删.txt >nul 2>nul
  7. for /f "skip=4" %%a in ('mountvol ^| find ":"') do for /f "tokens=*" %%i in ('dir /s /ashr /b "%%a"desktop.ini') do echo %%~dpi>>勿删.txt
  8. for /f "delims=" %%a in (勿删.txt) do if exist "%%a"desktop.ini del /f /a /q "%%a"desktop.ini & attrib -s %%a
  9. for /f "delims=" %%i in (勿删.txt) do if exist %%i\desktop.ini del /f /a /q %%i\desktop.ini & attrib -s %%i
  10. del /f /q /a 勿删.txt
  11. exit
复制代码

[ 本帖最后由 hmlstfqtl 于 2010-4-23 08:44 编辑 ]

TOP

返回列表