2015命令的意思.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、以下是原始的force_delete.bat内容: force_detele.bat ----------------------------- @ECHO OFF? ?? ???;这个命令可以省略,用来隐藏屏幕输出 @DEL /F /A /Q \\?\%1?? @RD /S /Q \\?\%1 ----------------------------- 然后会什么都不显示就把文件或者文件夹树删掉。。。 2、为什么呢? DEL 删除文件命令 /F 是强制删除只读属性文件 /A 不带属性参数(/A:xx)时可以无视除了只读属性外的其他属性(如系统属性) /Q 是自动跳过确认 RD 删除文件夹及文件夹树命令 /S 是说明删除文件夹树(如果文件夹有文件或子文件夹没加这个参数会提示文件夹非空而不能删除。。) /Q 也是自动跳过确认 3、重点来了,后边的\\?\%1是什么意思呢? 当我们把文件(eg. test.txt 全路径:d:\test.txt)拖到bat文件图标上松手时发生了什么呢? 其实这时候等效于执行了(假设bat文件路径为d:\gd.bat): d:\gd.bat d:\test.txt 此时d:\test.txt作为gd.bat 的第一个执行命令行参数,而%1就是代表这一串字符的变量 所以实际执行的情况是: ----------------------------------- @echo off [!enter!] @DEL /F /A /Q \\?\d:\test.txt [!enter!] @RD /S /Q \\?\d:\test.txt [!enter!] 系统找不到指定的文件 ---------------------------------- 当然,这时候del已经干掉了文件,rd当然找不到,两个命令都用就是为了适应各种情况。 4、不过为什么不直接用全路径而是用\\?\+全路径呢? 这是一个特别协议的应用,这个特别协议就是UNC -- Universal Naming Convention) ,中文是“通用命名规则”,具体可以查百度百科。。。 简单说就是\\hostname\resouce_or_path这样的路径,在winnt及之后基于其技术的系统中可以理解为资源的完整名称。另外,完整的UNC格式要把file:前缀加上,不过在不同环境下有时候可以省掉有时候又必须省掉。。 5、本例中的\\?\+完整磁盘路径名是UNC的特殊本地化实例,其实因为在UNC中?是代表1个或0个字符的通配符,所以其实际执行的命令并不是?而是.(太小了。。英文的句号) 这个又是什么呢?简单说就是一个对本地的引用,本地计算机根(又点根目录的感觉)。。。但是是不是localhost或者回送地址呢? 答案:不是! 简单的说,它们是网络根(请允许我如此粗浅的自造词。。。),所以把?替换成localhost或者会发现命令无效。 继续上边的,本地计算机根。。这个相当于在“我的电脑”一层,然后后边跟着的是包括盘符的路径。 ------------------------------------------------------------------------------------ 6、好吧,UNC绝对路径,然后又怎么样? 这里提一个UNC绝对路径的特别属性,貌似从WINNT时代延续至今。。 即:采取UNC绝对路径定位文件或者文件夹得时候,系统会无视其中的系统保留字或者设备名、带有特殊字符保护的文件系统控制文件名称。 所以,用这样的技巧可以删除一些原先无法删除的文件或者文件夹(除开正在运行、引用的、没有相应的删除/更改权限的[这个尚不明原因,NTFS太厉害了?]、专门技术保护的) 7、最后。。。恩,做个WARNING或者CAUTION吧,呵呵。。。 就是。。谨慎使用 (这里要感谢purplelichen和版主HAT @??forum 提供的例子) 在文件名包含某些特殊字符时有误删除的潜在危险! 设h:是一个u盘,下面有一个fdel.bat: DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 同时h:下还有一个名为 1.txt??的文本文件,此时 你想用 fdel.bat 删除 1.txt,当你把 1.txt 拖到 fdel.bat 上后,h:下的所有的文件和文件夹将全部不复存在。。。 这正是特殊字符(另:^也有类似效果)的作用了(执行的时候变成了rd /s /q \\?\h:\1.txt,的前后会并列,于是h:\被清空,然后才是定位1.txt以便删除。。。 8、于是综上:该bat很强大很简洁,但是一定不要用于删除文件名中(尤其是文件名首字符为或^)的文件或文件夹,否则可能

文档评论(0)

xqTDZJUaWh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档