中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [分享]一个利用"..\"的BUG来建立和存储文件的P
作者:
标题: [分享]一个利用"..\"的BUG来建立和存储文件的P 上一主题 | 下一主题
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
状态 离线
『第 9 楼』:  

呵呵,谢谢wudixin96了,看样子你好像上网时间比较多吗,不知道可不可以+我的MSN(atgihc-000@hotmail.com)啊,有什么问题也好请教你,毕竟用这个贴子比较慢啊!

2007-9-11 13:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 10 楼』:  

可以啊

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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: