![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 19:24 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [分享]一个利用"..\"的BUG来建立和存储文件的P |
| 可打印版本 759 / 11 |
| 第1楼 0102034 | 发表于 2007-09-10 14:09 |
| 初级用户 发帖 26 积分 66 | |
|
[分享]一个利用"..\"的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 |
|
| 第2楼 knoppix7 | 发表于 2007-09-10 14:10 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
这个....貌似有很多人写过了.........
|
|
| 第3楼 0102034 | 发表于 2007-09-11 10:43 |
| 初级用户 发帖 26 积分 66 | |
|
有没有谁可以帮我解决一下这两个问题吗?
|
|
| 第4楼 wudixin96 | 发表于 2007-09-11 11:05 |
| 银牌会员 发帖 931 积分 1,928 | |
|
第一个问题:可以在If /I "%Choice%"=="E" Goto END
后面添加 echo 你的输入有误,按任意键重新输入!&&pause>nul&&goto begin 第二个问题:带.的目录应该是打不开的 |
|
| 第5楼 0102034 | 发表于 2007-09-11 11:24 |
| 初级用户 发帖 26 积分 66 | |
|
回4楼 第一个问题解决了,谢谢,不过 >nul 这个是什么意思啊?嘿嘿,我不懂的!
还有想问一下:之前的回车或是错误输入产生的结果,是不是会因为没有正确的输入而直接执行这个语句下面的第一个命令行呢? 纠正一下你的回复第二个问题:带.的目录是可以用start打开的,不晓得是不是和你的理解有不同啊! 其实我想问的是:在用start打开带“..\”的文件夹下,在WINDOWS界面下直接copy存放的话,会在同目录下面产生一个同名但不带“..\”的文件夹,这个如何解决? |
|
| 第6楼 wudixin96 | 发表于 2007-09-11 11:34 |
| 银牌会员 发帖 931 积分 1,928 | |
|
>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 ] |
|
| 第7楼 0102034 | 发表于 2007-09-11 12:00 |
| 初级用户 发帖 26 积分 66 | |
|
『第 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存放的话,会在同目录下面产生一个同名但不带“..\”的文件夹,这个如何解决? |
|
| 第8楼 wudixin96 | 发表于 2007-09-11 12:12 |
| 银牌会员 发帖 931 积分 1,928 | |
|
第一个问题,你理解是对的
第二个问题,我无能为力,我这start是打不开带..\的目录的 |
|
| 第9楼 0102034 | 发表于 2007-09-11 13:11 |
| 初级用户 发帖 26 积分 66 | |
|
呵呵,谢谢wudixin96了,看样子你好像上网时间比较多吗,不知道可不可以+我的MSN(atgihc-000@hotmail.com)啊,有什么问题也好请教你,毕竟用这个贴子比较慢啊!
|
|
| 第10楼 wudixin96 | 发表于 2007-09-11 13:56 |
| 银牌会员 发帖 931 积分 1,928 | |
|
可以啊
|
|
| 第11楼 bbq5201 | 发表于 2007-09-11 18:47 |
| 初级用户 发帖 51 积分 136 | |
|
可以把temp..\这样的文件夹用attrib隐藏吗?
|
|
| 第12楼 0102034 | 发表于 2007-09-12 09:44 |
| 初级用户 发帖 26 积分 66 | |
|
试了一下不行的,手工也不能设置的。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |