1. 程式人生 > >【cmd】檔案操作

【cmd】檔案操作

cmd提供了對檔案操作一的一系列命令,本文將從檔案的建立、修改、替換、刪除、複製、移動、連結建立、檔案的屬性、檔案所有以及訪問許可權控制對檔案操作命令進行總結。

正題

1.檔案的新建

檔案的新建主要通過重定向>來建立,例如將ipconfig /all > ip_info.txt即是將ipconfig的內容重定向到ip_info.txt檔案中。這裡主要探討建立空白檔案的方式,建立空白檔案,思路是將輸出為空的命令重定向到檔案中即可完成。然而我們知道,echo總是會在輸出後加上一個空行,因此需要考慮別的有效的途徑。一種途徑是將nul裝置的內容copy到新檔案中:

copy nul > blank_file

也可以通過

type nul > blank_file

cd. > blank_file

這些命令的共同特點是:輸出為空,且不會產生任何“副作用”(cd..也可以新建檔案,但是會產生返回上級目錄的“副作用”)

2.檔案的修改

檔案的修改可以通過>>進行追加內容,其他修改主要依靠編輯器實現。

3.檔案的替換

replace 檔案 目錄 [/A][/S][/U]

不加選項 替換目錄中的同名檔案,如果不存在同名檔案,則跳過

/A 相當於copy一份檔案到目錄中,如果目錄中存在檔案,則跳過

/S 替換目錄所有子目錄中的檔案

/U 僅替換目錄中較舊的檔案

4.檔案的複製

copy [/[-]Y] [/L][/A][/B] source dest

如果source為檔案,dest為檔案,則複製source為dest

如果source為檔案,dest為目錄,則複製source為dest\source

如果source為目錄,dest為目錄,則將source中檔案複製到dest中

/Y如果重名,則直接覆蓋,不詢問

/-Y如果重名,則提示已存在同名資料夾,詢問是否覆蓋(預設)

/L如果souce為連結,則複製連結而不是所連結的檔案過去(預設複製連結對應的檔案)

/A 明確說明source為ascii文字檔案

/B 明確說明source為二進位制檔案

另外一種用法:copy file1 + file2 + ... filen 將file1、file2 ...的內容合併為filen(這裡存在一個問題:經過notepad++檢視發現最後會出現一個sub字元)

5.檔案的移動

move [/[-]Y][Y] source dest

將檔案/目錄移動到對應目錄中(如果需要重新命名,可以指定一個新的檔案或者目錄名)

[-[Y]] 語義與copy相同

6.檔案重新命名

ren oldname newname

可以看到,這個也可以使用move命令來實現(事實上因此linux中並沒有特意提供重新命名命令)

7.刪除檔案

del/erase target[/S][/F][/Q][/A]

當target為檔案時,直接刪除檔案(無法在回收戰恢復),為目錄時,只刪除目錄下的子檔案

/S 刪除目錄以及其子目錄下所有檔案(不刪除目錄)

/F 強制刪除只讀檔案

/Q 安靜模式

/A 刪除具有特定屬性的檔案(/A與dir /A中/A用法相同)

8.建立連結

mklink link target [/D][/H][/J]

預設建立target的soft link(軟連結)

/D 當target為目錄時,需要附加該引數

/H 建立hard link,區別與soft link,hard link指向檔案的結點而非檔名,當更改target的檔名時,soft link仍然指向原來的檔名,因此點選時會彈出“檔案不存在“,而hard link則不會

/J 建立目錄的junction,junction與link的區別主要表現在link始終指向本機檔案,而junction可以指向遠端檔案

9.刪除連結

刪除檔案連結使用del/erase命令即可

刪除目錄連結或者junction不能使用del/erase命令,del會刪除連結所指向的資料夾下的子檔案,要刪除連結或者junction需要使用rd

9.檔案的屬性

attrib [+|-] [R|A|S|H|I] target [/S][/D][/L] R 只讀檔案 A 歸檔檔案 S 系統檔案 H 隱藏檔案 I not content indexted file /S 對target以及其子項應用 /D process file  /L 表示target為一個連結

10.檔案的所有權

takeown /F 檔名 [/A]

將檔案所有者設定為當前使用者

/A 將檔案所有者設定為管理員

11.檔案的訪問許可權

只有檔案的所有者或者管理員才能設定訪問許可權

icacls name /grant username:permission

為username分配指定許可權

icacls name /deny username:permission

拒絕username指定許可權

permission:

F 所有許可權

R 只讀許可權

W 只寫許可權

M 修改許可權

RX 讀取與執行許可權

D 刪除許可權

icacls name /save aclfile 

將name的許可權設定儲存到acl檔案

icalcs directory /restore aclfile

將acl的設定恢復到dicrectory下的檔案中

總結

cmd檔案的操作較多較雜,這裡系統的進行整理一下,其中可以看到存在不少冗餘與不規範的情況,因此cmd命令相對於linux尚不夠完備,不過對於大多數的操作已經足夠了。

--------------------- 本文來自 flyoutsan 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/flyoutsan/article/details/52826739?utm_source=copy