免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
CMD實(shí)戰(zhàn)系列之一 - 批量重命名
需求:

只用cmd命令,將某目錄及其子目錄下所有文件都加上bak后綴。

分析:

1. “只用cmd命令”,意味著不能使用TC等工具;
2. “將某目錄及其子目錄下”,意味著要遍歷整個(gè)目錄,dir命令的/S選項(xiàng),以及for命令的/R選項(xiàng)都有遍歷功能;
3. “所有文件”,意味著遍歷時(shí)不能包括目錄,dir /A:-D 可以排除目錄,只列出文件;
4. “加上bak后綴”,可以用ren或move命令。

實(shí)戰(zhàn)一:豪情萬(wàn)丈

按照上面的分析,熟練點(diǎn)的很快能寫出:

代碼:
for /F %i in (‘dir /A:-D /S /B‘) do move %i %i.bak

眨一眼就能看懂的可以跳過(guò)下面的段落,直接摁Alt + F4了-.-
不眨眼還看不大懂的不要著急,且聽我慢慢道來(lái)^o^(為了弄清楚來(lái)龍去脈,下面的解釋會(huì)夾雜原始英文釋義)

1. 先解釋 "dir /A:-D /S /B",dir(ectory)命令的作用是
引用:
Displays a list of files and subdirectories in a directory.

DIR [drive:][path][filename] [/A[[:]attributes]] [/b] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
/A(ttribute):D(irectory) 表示只顯示屬性是目錄的項(xiàng),D前面加個(gè)減號(hào)-, 表示非,因此/A:-D就是顯示所有非目錄的項(xiàng)。

/S(ubdirectories), 表示所有子目錄和子目錄下的文件也都要顯示。

/B(are), 表示顯示最簡(jiǎn)單赤裸的信息就可以了,其它冗余信息都不顯示。對(duì)于dir命令來(lái)說(shuō),就是只顯示長(zhǎng)文件名。

好了,說(shuō)了這么多,其實(shí)很簡(jiǎn)單,dir /A:-D /S /B 的作用就是顯示某目錄及其子目錄下的所有文件列表。可以打開CMD窗口,親身體驗(yàn)一下(注意別在C盤根目錄用這個(gè)命令呵,文件太多,會(huì)刷半天屏的。若不幸使用,請(qǐng)使勁摁Ctrl + C退出)

2. 來(lái)看看 move 和 ren(name) 命令. cmd窗口輸入move /?,一清二楚:
引用:
Moves files and renames files and directories.

To move one or more files:
MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination

To rename a directory:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
/Y中的Y是Yes,-Y就是No了。如果知道有重名的,但依舊想自動(dòng)覆蓋,就加上/Y選項(xiàng),這選項(xiàng)和/S(ilence)選項(xiàng)是我最愛用的選項(xiàng)中的兩個(gè),誰(shuí)用誰(shuí)知道啊。

ren(ame)命令更簡(jiǎn)潔:
引用:
Renames a file or files.

RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

Note that you cannot specify a new drive or path for your destination file.
雖然簡(jiǎn)潔,但不簡(jiǎn)單。首先注意上面的cannot,filename2是不能帶目錄的,就因?yàn)檫@個(gè)原因,我更喜歡用move命令來(lái)替代rename。

值得提的一點(diǎn)是,cmd下的大部分命令都支持通配符的,因此要給某目錄下的文件加bak后綴,只要ren *.* *.*.bak就可以了,如果ren支持/S(ubdirectories),那么 ren /S *.* *.*.bak 就能解決最開始那個(gè)問題,可恨的是rename太簡(jiǎn)潔了,不支持任何選項(xiàng)-.-

3. 接著我們來(lái)看看 for /F %i in (‘command‘). 用cmd的大都聽過(guò)這樣一句武林秘籍:學(xué)會(huì)for,cmd就無(wú)敵了。for是cmd命令中的九陰真經(jīng),此言絕不虛傳。我們一起來(lái)看看這本威力無(wú)窮的經(jīng)書吧:
代碼:
for /? > forhelp.txt
獲取經(jīng)書的辦法我一般不告訴其他人,上面的命令據(jù)說(shuō)RP不好時(shí)會(huì)引入魔道。如果RP好,請(qǐng)憋著激情澎湃的心情,慢慢將經(jīng)書打開,映入眼簾的是欲練此功......
引用:
Runs a specified command for each file in a set of files.
上面這個(gè)官方說(shuō)明其實(shí)有點(diǎn)狹隘,for不僅僅能對(duì)文件集操作,只要是某個(gè)集(set),for就能遍歷處理。
for的基本用法是:
引用:
FOR %variable IN (set) DO command [command-parameters]
詳細(xì)解釋我就不多說(shuō)了,經(jīng)書里說(shuō)得非常清楚。這里稍微解釋下幾個(gè)“特殊”用法:

FOR /D %variable IN (set) DO command [command-parameters]
/D 中的D是Directory, 表示只匹配目錄。

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
/R 中的R是Recursive, 表示遞歸遍歷,在這里就是遍歷所有子目錄。
利用/R遍歷選項(xiàng),對(duì)于頂樓問題,我們還可以得到下面這個(gè)解決方案:
代碼:
for /R %i in (*.*) do ren %i *.*.bak

FOR /L %variable IN (start,step,end) DO command [command-parameters]
/L 中的L我找了半天也無(wú)法確定是哪個(gè)單詞,很可能是List。/L的含義倒是很清楚,經(jīng)書一點(diǎn)都不含糊。

FOR /F ["options"] %variable IN (set) DO command [command-parameters]
/F中的F是File,這是用得最多的也是最復(fù)雜同時(shí)最有用的一招,經(jīng)書的解釋也很詳細(xì)了,我想來(lái)想去,沒想到值得補(bǔ)充的,想說(shuō)一點(diǎn)的是,/F(ile)和file-set中的File是廣義的,for不僅僅用于文件集,所有字符串集其實(shí)都可以用for處理。此外,/F選項(xiàng)加上后,(set)可以是普通的file-set,還可以是"string" or ‘command‘;如果options中有usebackq,(set)中的表示又略有不同。

其它詳細(xì)解釋,就不多說(shuō)了,所謂師傅領(lǐng)進(jìn)門(自詡為師傅,汗一個(gè)先,hitme師爺別生氣).....

好,九陰真經(jīng)閱讀完畢,回到我們要討論的問題。
來(lái)看看 for /F in %i (‘dir /A:-D /S /B‘) do move %i %i.bak 就很容易懂了,‘dir /A:-D /S /B‘是命令,得到所有文件列表,for 用來(lái)遍歷,對(duì)于列表中的每一行,存儲(chǔ)到 %i 變量,然后執(zhí)行 move %i %i.bak 重命名,大功告成。

小結(jié):

1. 在實(shí)戰(zhàn)一中,我們學(xué)會(huì)了dir、move、rename、for四個(gè)命令。
2. 對(duì)于頂樓的問題,我們得到了兩個(gè)解決方案:

方案一:
代碼:
for /F %i in (‘dir /A:-D /S /B‘) do move %i %i.bak

方案二:
代碼:
for /R %i in (*.*) do ren %i *.*.bak

實(shí)戰(zhàn)二:莫撞墻

高高興興的把上面的解決方案交給了老板(不僅提供了,而且提供了兩個(gè),老板總該滿意了吧),誰(shuí)料屋不漏卻遭連環(huán)雷,舒舒服服的決定逛會(huì)CCF和DRL水區(qū)之時(shí),電話鈴聲大作,老板發(fā)火了:“搞什么搞,兩個(gè)命令運(yùn)行了,文件后綴一個(gè)也沒加上,糊弄我是吧,不趕快搞定扣你績(jī)效......”

暈啊,汗都來(lái)了,什么破老板,是不是不會(huì)開cmd窗口?上面的命令怎么會(huì)有錯(cuò)呢?萬(wàn)般無(wú)奈,遠(yuǎn)程協(xié)助老板,不運(yùn)行不知道,一運(yùn)行也不嚇一跳:

引用:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
......
lifesinger@bpwang ~# for /R %i in (*) do ren %i *.bak
lifesinger@bpwang ~# ren c:\2007.05.21 archivies\公司絕密文件005號(hào).doc *.bak
The syntax of the command is incorrect.
lifesinger@bpwang ~# ren c:\2007.05.21 archivies\公司絕密文件007號(hào).doc *.bak
The syntax of the command is incorrect.
......

汗啊,寒窗二十余年,苦練九陰神功,最后居然敗在死背四淫賊手上,數(shù)千年祖輩留下來(lái)的光榮顏面就此毀于一旦,地面無(wú)縫我想鑿啊,天堂無(wú)路我欲飛......

汗流浹背之時(shí),快速搞定:

方案一修正版:
代碼:
for /F "tokens=*" %i in (‘dir /A:-D /S /B‘) do move "%i" "%i.bak"
注意:必須加上"tokens=*",否則%i只能取到第一個(gè)空格前面的部分。

方案二修正版:
代碼:
for /R %i in (*.*) do ren "%i" "*.*.bak"

小結(jié):死背四(Space)淫賊無(wú)處不在,一定要小心小心又小心。

既是總結(jié)也是前言:做而后思之,可以為師矣

喜歡折騰Windows系統(tǒng)的,或多或少都接觸過(guò)dos命令。雖然已經(jīng)有很多強(qiáng)大易用的GUI程序,但我始終相信,dos命令以其簡(jiǎn)潔豐富、靈活多高效的特性將會(huì)永遠(yuǎn)存在而且一直被人使用。

cmd命令是dos命令中的基石,如果有精力,我會(huì)一并介紹其他dos下常用的命令行小工具,包括for win32版的ls、grep等。這些小工具強(qiáng)大的生命力,時(shí)常讓我感到驚訝。

打算寫的這個(gè)實(shí)戰(zhàn)系列,對(duì)自己來(lái)說(shuō)是一個(gè)鞏固提高的過(guò)程,同時(shí)很希望這些文章能對(duì)大伙的實(shí)際工作有所幫助,哪怕能節(jié)約你那么一點(diǎn)點(diǎn)時(shí)間,那也是我的愿望。

做而后思之,可以為師矣。我相信任何一個(gè)人,只要愿意在具體操作之后,去追尋思考為什么,就都可以成為CMD專家。希望我的這篇文章能拋磚引玉^o^

最后很感謝CMD王子hitme以及集百長(zhǎng)于一身的高人asap, 從你們的文章以及回復(fù)中,受益匪淺 ^o^
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
DOS命令大全二
DOS基礎(chǔ)教程
如何批量復(fù)制文件名
dos處學(xué)
將復(fù)雜命令操作集成到右鍵菜單
bat 批處理命令 文件 類型 語(yǔ)法 格式 應(yīng)用 詳解 - 老地方 - 51CTO技術(shù)博客...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服