中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]寻求参数解释:DEL /F /A /Q \\?\%1和RD /S /Q \\?\%1
作者:
标题: [求助]寻求参数解释:DEL /F /A /Q \\?\%1和RD /S /Q \\?\%1 上一主题 | 下一主题
whiteyoo
新手上路





积分 16
发帖 11
注册 2006-10-21
状态 离线
『楼 主』:  [求助]寻求参数解释:DEL /F /A /Q \\?\%1和RD /S /Q \\?\%1

前段时间看到这样一段代码:
DEL /F /A /Q \\?\%1 
RD /S /Q \\?\%1
前面的能看懂,只是对后面的\\?\%1不明白,似乎%1是默认为使用此批处理时输入的第一个值,请教大家能给个详细的解释,//?是什么?路径? 谢谢! ───────────────── 版务记录 ───────────────── 执行:HAT 操作:[2008-11-13]在帖子标题中增加搜索关键字;代码加code标签 说明:原标题"[求助]寻求一段代码里参数的解释"不利于论坛搜索 处罚:扣除2点积分 提示:建议阅读以下帖子 {1415}提问的智慧 {7326}论坛新手必读,所有人的基本行为准则 {22703}请不要做浮躁的人 {32667}[愤怒]那些连标题都写不清楚的人们啊,你们醒醒吧 {32825}本版严厉整顿烂帖 ───────────────── 版务记录 ───────────────── [ Last edited by HAT on 2008-11-13 at 13:56 ]


   此帖被 -2 点积分    点击查看详情   
评分人:【 HAT 分数: -2  时间:2008-11-13 13:57


2008-11-13 11:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
5872169
高级用户





积分 959
发帖 474
注册 2007-10-25
状态 离线
『第 2 楼』:  

?是任意路径,任何文件夹


2008-11-13 13:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

Q: 为什么rd /s /q \\.\h:\autorun.inf\这条命令为什么能删除包含畸形文件夹在内的所有文件夹? \\.\理解为\\127.0.0.1\就行了,当然实际上是行不通的。 UNC的一个本地化特例。 ?\可以理解成遍历,?是统配符,表示匹配0个或1个任意字符。 .\代表本地节点,在概念上来有点像磁盘根目录,也可以说成是计算机根目录。 所以dir \\.\C:\是可以被命令行解释器识别的,更可以跨盘符的来使用绝对路径引用,例如: F:\>\\.\C:\windows\system32\cmd.exe Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. F:\> 使用UNC路径不会捡测路径中的保留字设备名称等,因此删除包含畸形文件夹在内的所有文件夹?。 Q: 为什么del /q /f /a \\?\%1可以删除所有文件? A: UNC路径的一个特例。UNC路径就是符合 \\servername\sharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。?是统配符,表示匹配0个或1个任意字符。使用UNC路径不会捡测路径中的保留字设备名称等,因此可以用这种方法来删除特殊文件或目录。 Q: 为什么说这样的命令非常危险? A: 如果你想删除的文件夹中包含特殊路径,可能导致整个磁盘分区的数据全部被删除。因此,如果你还不能对这个命令了如指掌,不建议使用这样的命令。




2008-11-13 13:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
purplelichen
新手上路





积分 8
发帖 8
注册 2008-11-10
状态 离线
『第 4 楼』:  

Q: 为什么说这样的命令非常危险? A: 如果你想删除的文件夹中包含特殊路径,可能导致整个磁盘分区的数据全部被删除。因此,如果你还不能对这个命令了如指掌,不建议使用这样的命令。 ---------------------------- 我想强调以上这句话,举一例: 假设h:盘是一个u盘分区,下面有一个 删除顽固文件.bat,代码为: rem --------------------------------------------- DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 rem --------------------------------------------- 同时h:盘下还有一个取名为 &1.txt 的文本文件,此时 你想用 删除顽固文件.bat 删除 &1.txt,当你把 &1.txt 拖到 删除顽固文件.bat 上后,发现h:盘下所有的文件和文件夹全 被删除了。 这是因为传递的参数中含有特殊字符"&"(这样的特殊字符还有"^"), 对这个问题感兴趣或者有解决方案的高手可以去本版的这个主题: 关于批处理可替换参数的问题


2008-11-17 21:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
radem
高级用户

CMD感染者


积分 691
发帖 383
注册 2008-5-23
状态 离线
『第 5 楼』:  

真是非常危险,大家要慎重使用这样的命令




2008-11-19 12:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 6 楼』:  

Originally posted by purplelichen at 2008-11-17 21:58: Q: 为什么说这样的命令非常危险? A: 如果你想删除的文件夹中包含特殊路径,可能导致整个磁盘分区的数据全部被删除。因此,如果你还不能对这个 ...
经我实验不是带^字符和带&字符的会带来危险,而是有带^&组合字符的一定有危险. 不过以下代码不会带来危险:
@echo off
if not "%~n1"=="" if not exist "%~f1" goto AAS
if not "%~n1"=="" if exist "%~f1" goto AAS
color 7c
cls
@echo.
@echo                               文件垃圾桶
@echo.
@echo          可删除任意文件或畸形目录,可将目标文件或目录拖放垃圾桶中.
@echo.
@echo       为了用户文件安全,对带有"^&"组合字符文件名的危险删除进行避免.
@echo.
@echo                                                 制作: QQ: 251485609
@echo.
pause>nul 2>nul
echo  
goto eof

:AAS
set rt="%~n1"
if "%rt:~1,1%"=="&" goto BS
if "%rt:~1,2%"=="^&" goto BS
del /f /a /q \\?\%1 >nul 2>nul 
rd /s /q \\?\%1 >nul 2>nul
echo  
goto eof

:BS
@echo.
@echo          为了安全,不支持此类危险删除。
echo  
pause>nul 2>nul
[ Last edited by ZJHJ on 2008-11-20 at 22:10 ]


2008-11-20 22:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
menghen
新手上路





积分 10
发帖 6
注册 2007-12-14
状态 离线
『第 7 楼』:  

恩 谢谢。。。


2009-1-27 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
samliu
新手上路





积分 15
发帖 15
注册 2009-1-24
状态 离线
『第 8 楼』:  

学习了 还好没有在U盘中试过 要不可就真的危险了 谢谢 楼主的提醒


2009-2-5 22:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 9 楼』:  

这不是因为这个UNC标识而导致的危险,是批处理自身造成的错误 你在批处理中传递H:\&1.txt 那么执行的就是 rd /s /q \\?\H:\ 1.txt del /f /a /q \\?\H:\ 1.txt &在cmd是一个特珠的连接命令 你执行rd /s /q H:\&1.txt的结果也是一样的




49206C6F766520796F752067757973 54656C3A3133383238343036373837
2009-2-6 17:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhengqian529
初级用户





积分 100
发帖 93
注册 2009-1-14
来自 湖南
状态 离线
『第 10 楼』:  

受教了 为什么一直以来的标准不限制文件名里面可以包含'&'字符,而只是限制 ‘/ \ : * ? " < > |’


2009-2-6 19:24
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (250988158)  编辑帖子  回复  引用回复

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


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



论坛跳转: