日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[other] 强力删除命令

發(fā)布時(shí)間:2024/3/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [other] 强力删除命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1

1、以下是原始的force_delete.bat內(nèi)容:

force_detele.bat

@ECHO OFF ;這個(gè)命令可以省略,用來(lái)隱藏屏幕輸出
@DEL /F /A /Q \?\%1
@RD /S /Q \?\%1

然后會(huì)什么都不顯示就把文件或者文件夾樹(shù)刪掉。。。

2、為什么呢?

DEL 刪除文件命令 /F 是強(qiáng)制刪除只讀屬性文件 /A 不帶屬性參數(shù)(/A:xx)時(shí)可以無(wú)視除了只讀屬性外的其他屬性(如系統(tǒng)屬性) /Q 是自動(dòng)跳過(guò)確認(rèn)
RD 刪除文件夾及文件夾樹(shù)命令 /S 是說(shuō)明刪除文件夾樹(shù)(如果文件夾有文件或子文件夾沒(méi)加這個(gè)參數(shù)會(huì)提示文件夾非空而不能刪除。。) /Q 也是自動(dòng)跳過(guò)確認(rèn)

3、重點(diǎn)來(lái)了,后邊的”\?\%1”是什么意思呢?
當(dāng)我們把文件(eg. test.txt 全路徑:”d:\test.txt”)拖到bat文件圖標(biāo)上松手時(shí)發(fā)生了什么呢?

其實(shí)這時(shí)候等效于執(zhí)行了(假設(shè)bat文件路徑為d:\gd.bat):

“d:\gd.bat “d:\test.txt”“

此時(shí)”d:\test.txt”作為gd.bat 的第一個(gè)執(zhí)行命令行參數(shù),而%1就是代表這一串字符的變量

所以實(shí)際執(zhí)行的情況是:

@echo off [!enter!]

@DEL /F /A /Q \?\”d:\test.txt” [!enter!]

@RD /S /Q \?\”d:\test.txt” [!enter!]

系統(tǒng)找不到指定的文件

當(dāng)然,這時(shí)候del已經(jīng)干掉了文件,rd當(dāng)然找不到,兩個(gè)命令都用就是為了適應(yīng)各種情況。

4、不過(guò)為什么不直接用全路徑而是用”\?\”+全路徑呢?

這是一個(gè)特別協(xié)議的應(yīng)用,這個(gè)特別協(xié)議就是UNC – Universal Naming Convention) ,中文是“通用命名規(guī)則”,具體可以查百度百科。。。

簡(jiǎn)單說(shuō)就是\hostname\resouce_or_path這樣的路徑,在winnt及之后基于其技術(shù)的系統(tǒng)中可以理解為資源的完整名稱(chēng)。另外,完整的UNC格式要把”file:”前綴加上,不過(guò)在不同環(huán)境下有時(shí)候可以省掉有時(shí)候又必須省掉。。

5、本例中的”\?\”+完整磁盤(pán)路徑名是UNC的特殊本地化實(shí)例,其實(shí)因?yàn)樵赨NC中?是代表1個(gè)或0個(gè)字符的通配符,所以其實(shí)際執(zhí)行的命令并不是?而是.(太小了。。英文的句號(hào))

這個(gè)又是什么呢?簡(jiǎn)單說(shuō)就是一個(gè)對(duì)本地的引用,本地計(jì)算機(jī)根(又點(diǎn)根目錄的感覺(jué))。。。但是是不是localhost或者回送地址127.0.0.1呢?
答案:不是! 簡(jiǎn)單的說(shuō),它們是網(wǎng)絡(luò)根(請(qǐng)?jiān)试S我如此粗淺的自造詞。。。),所以把?替換成localhost或者127.0.0.1會(huì)發(fā)現(xiàn)命令無(wú)效。

繼續(xù)上邊的,本地計(jì)算機(jī)根。。這個(gè)相當(dāng)于在“我的電腦”一層,然后后邊跟著的是包括盤(pán)符的路徑。

6、好吧,UNC絕對(duì)路徑,然后又怎么樣?

這里提一個(gè)UNC絕對(duì)路徑的特別屬性,貌似從WINNT時(shí)代延續(xù)至今。。

即:采取UNC絕對(duì)路徑定位文件或者文件夾得時(shí)候,系統(tǒng)會(huì)無(wú)視其中的系統(tǒng)保留字或者設(shè)備名、帶有特殊字符保護(hù)的文件系統(tǒng)控制文件名稱(chēng)。
所以,用這樣的技巧可以刪除一些原先無(wú)法刪除的文件或者文件夾(除開(kāi)正在運(yùn)行、引用的、沒(méi)有相應(yīng)的刪除/更改權(quán)限的[這個(gè)尚不明原因,NTFS太厲害了?]、專(zhuān)門(mén)技術(shù)保護(hù)的)

7、最后。。。恩,做個(gè)WARNING或者CAUTION吧,呵呵。。。
就是。。謹(jǐn)慎使用
(這里要感謝purplelichen和版主HAT @ www.cn-dos.net forum 提供的例子)

在文件名包含某些特殊字符時(shí)有誤刪除的潛在危險(xiǎn)!
設(shè)h:是一個(gè)u盤(pán),下面有一個(gè)fdel.bat:

DEL /F /A /Q \?\%1
RD /S /Q \?\%1

同時(shí)h:下還有一個(gè)名為 &1.txt 的文本文件,此時(shí)
你想用 fdel.bat 刪除 &1.txt,當(dāng)你把 &1.txt 拖到
fdel.bat 上后,h:下的所有的文件和文件夾將全部不復(fù)存在。。。

這正是特殊字符”&”(另:”^&”也有類(lèi)似效果)的作用了(執(zhí)行的時(shí)候變成了rd /s /q \?\”h:\&1.txt”,&的前后會(huì)并列,于是h:\被清空,然后才是定位1.txt以便刪除。。。

8、于是綜上:該bat很強(qiáng)大很簡(jiǎn)潔,但是一定不要用于刪除文件名中(尤其是文件名首字符為&或^&)的文件或文件夾,否則可能造成誤刪除。

9、附:
相對(duì)安全的代碼,具體就不詳解了,主要是加入了文件名的判定:(ZJHJ @ www.cn-dos.net forum 提供,有修改,感謝~~)

以下沒(méi)有驗(yàn)證過(guò),使用也請(qǐng)謹(jǐn)慎。。。。

@echo off
if not “%~n1”==”” if not exist “%~f1” goto CHK
if not “%~n1”==”” if exist “%~f1” goto CHK
color 7c
cls
@echo
@echo 頑固文件垃圾桶
@echo
@echo 可刪除任意頑固文件或目錄,將目標(biāo)文件或目錄拖放到本bat圖標(biāo)上即可.
@echo
@echo 為了用戶(hù)文件安全,已對(duì)帶有”&”、”^&”組合字符文件名的危險(xiǎn)刪除進(jìn)行阻止
@echo
@echo 原作者Q#: 251485609
@pause>nul 2>nul
echo on
goto eof

:CHK
set rt=”%~n1”
if “%rt:~1,1%”==”&” goto FINE
if “%rt:~1,2%”==”^&” goto FINE
del /f /a /q \?\%1 >nul 2>nul
rd /s /q \?\%1 >nul 2>nul
echo on
goto eof

:FINE
@echo
@echo 為了安全,不支持此類(lèi)危險(xiǎn)刪除!
echo on
pause>nul 2>nul

總結(jié)

以上是生活随笔為你收集整理的[other] 强力删除命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。