|
0102034
初级用户
积分 66
发帖 26
注册 2007-1-30
状态 离线
|
『楼 主』:
[分享]一个利用"..\"的BUG来建立和存储文件的P
写了一个利用"..\"的BUG来建立和存储文件的P,但有两处有缺点,请大家帮忙解决,也请各位帮忙看看还要做那些精简和完善。代码如下:
@Echo Off
:: 此处用来验证IP是否正确,防止他人在别的电脑(我是想在公司内网中的电脑上用的)上使用.
:: 曾经打算用有密码的P来做开头,但后来一想这个BUG只要懂的人就一文不值了,所以也就算了。
:: 此处代码是本论坛银牌会员 wudixin96 提供,在此谢谢了。
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP Address"') do set ip=%%i
set ip=%ip: =%
if "%ip%"=="10.11.1.188" goto Begin
goto :eof
:Begin
cls
MODE con: COLS=39 LINES=08
COLOR E0
Echo 利用"..\"的BUG来建立和存储文件。
:: 之所以加上“或直接回车”是因为回车或是错误输入的话会自动在下面的“:MD”目标处建立文件夹,我搞了好久也没明白为什么,可能是“If Not "%Choice%"=="" Set Choice=%Choice:~0,1%”这里有点问题吧,请大家帮忙指点。
Echo (M) 建立文件夹(或直接回车)
:: 下面的请勿直接向里面拷贝文件是因为:如果用Start打开文件夹后在WINDOWS界面下直接存放的话会在同目录下面产生一个同名但不带“..\”的文件夹,请大家帮忙指点如何避免这个问题。
Echo (O) 打开文件夹(请勿直接向里面拷贝文件)
Echo (C) 存放文件
Echo (D) 删除文件夹(慎用,不可恢复)
Echo (E) 退出
Echo.
Set Choice=
Set /P Choice=请输入()内的字母:
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="M" Goto MD
If /I "%Choice%"=="O" Goto OPEN
If /I "%Choice%"=="C" Goto COPY
If /I "%Choice%"=="D" Goto DELETE
If /I "%Choice%"=="E" Goto END
:MD
MD "D:\MDTest\Temp..\"
goto Begin
:OPEN
start "D:\MDTest\Temp..\"
goto Begin
:COPY
cls
Echo.
:: 此处代码是本论坛高级用户 jmz573515 提供,在此谢谢了,也谢谢 银牌会员slore和初级用户dy2003310解答与支持。
Set /p path=请把用鼠标把文件或文件夹拖放到这个界面里:
copy %path% "D:\MDTest\Temp..\"
goto Begin
:DELETE
rd /q /s "D:\MDTest\Temp..\"
goto Begin
:END
exit
|
|
2007-9-10 14:09 |
|
|
knoppix7
银牌会员
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
『第
2 楼』:
这个....貌似有很多人写过了.........
|
|
2007-9-10 14:10 |
|
|
0102034
初级用户
积分 66
发帖 26
注册 2007-1-30
状态 离线
|
『第
3 楼』:
有没有谁可以帮我解决一下这两个问题吗?
|
|
2007-9-11 10:43 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
4 楼』:
第一个问题:可以在If /I "%Choice%"=="E" Goto END
后面添加
echo 你的输入有误,按任意键重新输入!&&pause>nul&&goto begin
第二个问题:带.的目录应该是打不开的
|
|
2007-9-11 11:05 |
|
|
0102034
初级用户
积分 66
发帖 26
注册 2007-1-30
状态 离线
|
『第
5 楼』:
回4楼
第一个问题解决了,谢谢,不过 >nul 这个是什么意思啊?嘿嘿,我不懂的!
还有想问一下:之前的回车或是错误输入产生的结果,是不是会因为没有正确的输入而直接执行这个语句下面的第一个命令行呢?
纠正一下你的回复第二个问题:带.的目录是可以用start打开的,不晓得是不是和你的理解有不同啊!
其实我想问的是:在用start打开带“..\”的文件夹下,在WINDOWS界面下直接copy存放的话,会在同目录下面产生一个同名但不带“..\”的文件夹,这个如何解决?
|
|
2007-9-11 11:24 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
6 楼』:
>nul是屏蔽输出而已
之前的错误是因为:
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="M" Goto MD
If /I "%Choice%"=="O" Goto OPEN
If /I "%Choice%"=="C" Goto COPY
If /I "%Choice%"=="D" Goto DELETE
If /I "%Choice%"=="E" Goto END
这里没有对非法输入进行处理而已。
我这start是打不开带.的目录的。但是如果在同级目录下有不带.的同名目录的,用start打开带.的目录是会打开不带.的同名目录的。
[ Last edited by wudixin96 on 2007-9-11 at 11:36 AM ]
|
|
2007-9-11 11:34 |
|
|
0102034
初级用户
积分 66
发帖 26
注册 2007-1-30
状态 离线
|
『第
7 楼』:
『第 6 楼』:
>nul是屏蔽输出而已
那也可以理解为必须输入下面命令中的字母了,负责无效,对吧?
If /I "%Choice%"=="M" Goto MD
If /I "%Choice%"=="O" Goto OPEN
If /I "%Choice%"=="C" Goto COPY
If /I "%Choice%"=="D" Goto DELETE
If /I "%Choice%"=="E" Goto END
不过如何避免下面的问题呢?
在用start打开带“..\”的文件夹下,在WINDOWS界面下直接copy存放的话,会在同目录下面产生一个同名但不带“..\”的文件夹,这个如何解决?
|
|
2007-9-11 12:00 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
8 楼』:
第一个问题,你理解是对的
第二个问题,我无能为力,我这start是打不开带..\的目录的
|
|
2007-9-11 12:12 |
|
|
0102034
初级用户
积分 66
发帖 26
注册 2007-1-30
状态 离线
|
|
2007-9-11 13:11 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
|
2007-9-11 13:56 |
|
|
bbq5201
初级用户
积分 136
发帖 51
注册 2007-8-4
状态 离线
|
『第
11 楼』:
可以把temp..\这样的文件夹用attrib隐藏吗?
|
|
2007-9-11 18:47 |
|
|
0102034
初级用户
积分 66
发帖 26
注册 2007-1-30
状态 离线
|
『第
12 楼』:
试了一下不行的,手工也不能设置的。
|
|
2007-9-12 09:44 |
|