以前在论坛上看到可以简答的建立一个不可以删除的文件夹用来放一些不想让别人看到的文件之类的
虽说安全性也不怎么高,但是挺简单,对于一般电脑用户还是有用的
新学批处理,很想动手练习一下,于是就写了下面的代码
有几个问题不懂,希望有人能指教和完善这个东西
1、这个程序在执行创建的时候,实际是应该判断是否以前创建过,但是对于sc...\这样的目录,好像用 if exist 不好判断
不知道如何才能实现
2、密码需要加密,也能够根据不同的使用者自定义密码:程序里面实际上是应该有个密码加密的过程的,找到一些,但是不太理解不知道如何嵌入进来,现在是用当前系统的用户名来代替(一般使用者在未知的情况下能糊弄过去吧,我也想过用当前日期),再一个就是批处理的代码里面,如果能在定制后能够保存用来判断的密码
比如:我使用第一次的时候 问我设置密码,下次就用这个密码来判断,但是下次还是这个批处理,怎么能记住上次的密码,(不用创建新的文件那种)
3、程序里面不知什么地方有错,在执行进入那个文件夹的时候 偶尔会莫名其妙的自己关掉,就是那个文件夹打开了,然后什么也没动,自己就关闭了,不知道是 为什么 对start的 参数似乎不是非常清楚,加 /i /b 之类的都不能解决(这种情况有时却不发生)
4、在创建目录的时候 建立 那个 比如建立 f:\sc...\目录之后 没法用attrib 设置系统 和隐藏属性 只能曲线救国 在外面又套了一个正常的文件夹 对那个文件夹设置属性
5、还有就是这个不可以删除 不可以直接进入的目录 似乎在打开并放入文件之后 就会出现一个“同名”的文件夹,比如我建立的是f:\sc...\ 里面放入文件之后 就会多了 f:\sc\的目录 很奇怪的 里面的东西明明存在,但两个文件夹属性都是空 不明白,还有就是 怎么能不要多出那个 f:\sc\的目录呢?
简单的讲
1、设置密码并保存的问题
2、批处理加密字符串的简单有效地算法
3、畸形目录如何设置属性 如何判断存在
4、存取文件的时候如何能避免产生多余的文件
5、用start打开的文件夹 莫名其妙关闭的问题如何解决
- @echo off & setlocal EnableDelayedExpansion
- title 我有许多小秘密,就不告诉你,就不告诉...
- cls
- color 1f
- MODE con: COLS=35 LINES=15
- :check
- cls
- set /p pw=请输入密码:
- if not "%pw%"=="%username%" goto check
- :cho
- cls
- echo.
- echo 1.创建“我的小秘密”目录
- echo.
- echo 2.删除“我的小秘密”目录
- echo.
- echo 3.进入“我的小秘密”目录
- echo.
- echo 4.退出
- echo.
- set choice=
- set /p choice= 请选择:
- IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
- if /i "%choice%"=="1" goto cr
- if /i "%choice%"=="2" goto de
- if /i "%choice%"=="3" goto en
- if /i "%choice%"=="4" goto end
- echo 请正确选择&pause&goto cho
- :cr
- if not exist _config.txt (
- echo 无配置文件,请配置好保存
- echo.>_config.txt
- start /wait _config.txt
- goto cr
- )
- call :read
- md "%ro%\"
- attrib "%ro%" +h +s /s /d
- md "%pa%...\"
- echo 创建成功,按任意键返回&pause>nul
- goto cho
-
- :de
- start /wait msg %username% /time:5 !!注意:我的小秘密文件夹将彻底删除,如想取消请关闭本窗口
- echo 按任意键执行删除&pause>nul
- call :read
- rd /s /q %ro%
- echo 成功删除,按任意键返回&pause>nul
- goto cho
-
- :en
- call :read
- start /i /max %pa%...\ >nul 2>nul
- echo 按任意键返回&pause>nul
- goto cho
-
- :end
- exit
-
- :read
- set n=0
- for /f "tokens=2 delims=:" %%i in (_config.txt) do (
- set /a n+=1
- if !n! equ 1 set dr=%%i
- if !n! equ 2 set di=%%i
- )
- set pa=!dr!:\RECYC1ER\!di!
- set ro=!dr!:\RECYC1ER
- goto :eof
复制代码
|