Board logo

标题: [文件操作] 请教批处理隐藏文件夹后如何才能不可删除 [打印本页]

作者: lxj    时间: 2008-10-25 11:04     标题: 请教批处理隐藏文件夹后如何才能不可删除

昨天在这里找了半天,找到一个加密文件夹的批处理,感觉很好用.但是,最后试出一个bug来,就是建成的文件夹为控制面板,但是控制面板里面没程序的时候是不可删除,一装进程序就能删除.不知为什么?有没有办法可以更改.
贴上昨天的批处理,谢谢各位指教:
  1. @echo off&title 文件夹加密&color 0f&mode con cols=30 lines=15
  2. set l1= ============================
  3. set l2=    编写:      野菜
  4. set l3= ----------------------------
  5. set l4=   QQ:959212677
  6. set l5= ============================
  7. if exist 控制面板\ goto start
  8. md 控制面板
  9. attrib 控制面板 +s +h
  10. echo [.ShellClassInfo]>控制面板\desktop.ini
  11. echo CLSID={21EC2020-3AEA-1069-A2DD-08002B30309D}>>控制面板\desktop.ini
  12. attrib 控制面板\desktop.ini +s +h +r
  13. :once
  14. echo %l1%
  15. echo %l2%
  16. echo %l3%
  17. echo %l4%
  18. echo %l5%
  19. echo.
  20. echo          首次使用
  21. echo.
  22. goto pwd
  23. :pwd0
  24. cls
  25. echo 两次输入密码不一致,请重新输入
  26. echo.
  27. :pwd
  28. set /p pwd="请设置密码:"
  29. if '%pwd%'=='' goto pwd
  30. set /p pwd0="请再输一次:"
  31. if not '%pwd%'=='%pwd0%' goto pwd0
  32. echo %pwd%>控制面板\pwd.lnk
  33. attrib 控制面板\pwd.lnk +s +h
  34. echo.
  35. echo 密码设置成功
  36. ping 127.1 -n 3 >nul 2>nul
  37. md 控制面板\files..\
  38. goto start0
  39. :start
  40. if not exist 控制面板\pwd.lnk goto once
  41. for /f "tokens=*" %%a in (控制面板\pwd.lnk) do set mima=%%a
  42. echo %l1%
  43. echo %l2%
  44. echo %l3%
  45. echo %l4%
  46. echo %l5%
  47. set /p pass="请输入密码:"
  48. goto kaishihou
  49. :kaishi
  50. set /p pass="请输入密码:"
  51. :kaishihou
  52. if '%pass%'=='' goto kaishi
  53. if '%pass%'=='%mima%' goto start0
  54. cls
  55. echo 对不起,密码错误!请重新输入!
  56. goto kaishi
  57. :start0
  58. cls
  59. echo %l1%
  60. echo %l2%
  61. echo %l3%
  62. echo %l4%
  63. echo %l5%
  64. echo.
  65. echo      1、打开加密文件夹
  66. echo.
  67. echo      2、删除加密文件夹
  68. echo.
  69. set /p choose="请选择:"
  70. if '%choose%'=='' goto start0
  71. if %choose%==1 goto open
  72. if %choose%==2 goto 2
  73. :2
  74. cls
  75. echo 删除后原先加密文件夹中的文件也将被删除,请确定您已经备份过重要文件!!!
  76. echo.
  77. set /p del="确认删除? Y/N ?"
  78. if /i '%del%'=='y' (
  79.   rd /q /s 控制面板
  80.   echo 操作成功!
  81.   ping 127.1 -n 3 >nul 2>nul
  82.   exit
  83. )
  84. echo 已取消操作
  85. ping 127.1 -n 3 >nul 2>nul
  86. goto start0
  87. :open
  88. cd 控制面板
  89. start "" "%cd%\files..\"
复制代码


[ 本帖最后由 lxj 于 2008-10-25 12:17 编辑 ]
作者: Batcher    时间: 2008-10-25 11:09

本版规则
1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论;
2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件;
3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;

作者: yslyxqysl    时间: 2008-10-25 11:16

http://www.bathome.net/viewthread.php?tid=404
作者: lxj    时间: 2008-10-25 12:15

已经修改好,谢谢两位,能否帮帮我?
作者: rat    时间: 2008-10-25 12:52

  1. @echo off&title 文件夹加密&color 0f&mode con cols=30 lines=15
  2. set l1= ============================
  3. set l2=    编写:      野菜
  4. set l3= ----------------------------
  5. set l4=   QQ:959212677
  6. set l5= ============================
  7. if exist 控制面板\ goto start
  8. md 控制面板
  9. attrib 控制面板 +s +h
  10. echo [.ShellClassInfo]>控制面板\desktop.ini
  11. echo CLSID={21EC2020-3AEA-1069-A2DD-08002B30309D}>>控制面板\desktop.ini
  12. attrib 控制面板\desktop.ini +s +h +r
  13. :once
  14. echo %l1%
  15. echo %l2%
  16. echo %l3%
  17. echo %l4%
  18. echo %l5%
  19. echo.
  20. echo          首次使用
  21. echo.
  22. goto pwd
  23. :pwd0
  24. cls
  25. echo 两次输入密码不一致,请重新输入
  26. echo.
  27. :pwd
  28. set /p pwd="请设置密码:"
  29. if '%pwd%'=='' goto pwd
  30. set /p pwd0="请再输一次:"
  31. if not '%pwd%'=='%pwd0%' goto pwd0
  32. echo %pwd%>控制面板\pwd.lnk
  33. attrib 控制面板\pwd.lnk +s +h
  34. echo.
  35. echo 密码设置成功
  36. ping 127.1 -n 3 >nul 2>nul
  37. md 控制面板\files..\
  38. md 控制面板\bathome..\
  39. goto start0
  40. :start
  41. if not exist 控制面板\pwd.lnk goto once
  42. for /f "tokens=*" %%a in (控制面板\pwd.lnk) do set mima=%%a
  43. echo %l1%
  44. echo %l2%
  45. echo %l3%
  46. echo %l4%
  47. echo %l5%
  48. set /p pass="请输入密码:"
  49. goto kaishihou
  50. :kaishi
  51. set /p pass="请输入密码:"
  52. :kaishihou
  53. if '%pass%'=='' goto kaishi
  54. if '%pass%'=='%mima%' goto start0
  55. cls
  56. echo 对不起,密码错误!请重新输入!
  57. goto kaishi
  58. :start0
  59. cls
  60. echo %l1%
  61. echo %l2%
  62. echo %l3%
  63. echo %l4%
  64. echo %l5%
  65. echo.
  66. echo      1、打开加密文件夹
  67. echo.
  68. echo      2、删除加密文件夹
  69. echo.
  70. set /p choose="请选择:"
  71. if '%choose%'=='' goto start0
  72. if %choose%==1 goto open
  73. if %choose%==2 goto 2
  74. :2
  75. cls
  76. echo 删除后原先加密文件夹中的文件也将被删除,请确定您已经备份过重要文件!!!
  77. echo.
  78. set /p del="确认删除? Y/N ?"
  79. if /i '%del%'=='y' (
  80.   rd /q /s 控制面板
  81.   echo 操作成功!
  82.   ping 127.1 -n 3 >nul 2>nul
  83.   exit
  84. )
  85. echo 已取消操作
  86. ping 127.1 -n 3 >nul 2>nul
  87. goto start0
  88. :open
  89. cd 控制面板
  90. start "" "%cd%\files..\"
复制代码

作者: lxj    时间: 2008-10-25 13:40

谢谢版主,经测试后可行,
对比了一下,好像只多了一行:md 控制面板\bathome..\
这样就使里面放了文件就删除不了,能不能告诉一下是怎么回事吗?
作者: lxj    时间: 2008-10-25 14:51

已找到原因,请锁吧.谢谢解答.其实原理很简单,我一直以为应该是在控制面板下的files..文件夹里.但其实新建的那个文件夹并不在那,所以,有文件删不掉.
作者: rat    时间: 2008-10-25 15:15

很简单,现在已知“files..\”文件夹里放东西以后,“控制面板”文件夹可以删除,没放东西就不可以删除,即:
   只要保证一个文件夹里有“以两个点为结尾的空的文件夹”就可以防止被删除。
很明显,\bathome..\就是一个这样的空文件夹。

打开“以两个点为结尾的空的文件夹”,如c盘下的“rat test..\”文件夹:
start "" "c:\rat test..\"
如果路径中没空格,如c:\test..\,直接用:start c:\test..\
注意,一定要写绝对路径和最后的“\”。

[ 本帖最后由 rat 于 2008-10-25 15:17 编辑 ]
作者: lxj    时间: 2008-10-25 15:32

版主,又发现一个问题,运行后,要是直接关掉,再运行,有时会提示密码错,type pwd.lnk后,提示echo处于关闭状态.如何解决.
作者: jellyhk    时间: 2008-10-25 21:51

我这里运行了下!没出现你出现的状况!
作者: sleiing    时间: 2009-8-8 18:33

我现在进不了,一直密码错误 !我开始设置的1中间文件夹打开后直接关掉了!就一直密码错误!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2