老夫子源碼
『壹』 09年至今為止上映了哪些電影
火龍對決 4月1號上映
我們天上見 4月2號上映
澳門1949 4月2號上映
月滿軒尼詩 4月2號上映
孤膽拯救 4月8號上映
彈 道 4月9號上映
終極匹配 4月9號上映
四個丘比特 4月9號上映
開火 4月10號上映
天上掉下個林妹妹 4月10號上映
杜拉拉升職記 4月15號上映
歲月神偷 4月16號上映
諸神之戰 4月16號上映
孤堡驚情 4月16號上映
東風雨 4月21號上映
黑貓警長 4月23號上映
葉問2 4月27號上映
如夢 4月30號上映
尋找劉三姐 4月30號上映
A面B面 4月30號上映
生死逃亡 5月1號上映
聖地額濟納 5月6號上映
三笑之才子佳人 5月7號上映
鋼鐵俠2 5月7號上映
生死逃亡 5月12號上映
奪命手機 5月14號上映
馴龍記 5月14號上映
感情生活 5月15號上映
復興之路 5月15號上映
地牢圍攻 5月18號上映
舞出我人生2 5月21號上映
決戰豪門 5月21號上映
怪物史瑞克4 5月21號上映
馬文的戰爭 5月21號上映
波斯王子:時之刃 5月28號上映
烏龜也上網 5月28號上映
鋼琴小神童 5月28日上映
超蛙戰士之初露鋒芒Animen6月1號上映
高度懷疑 6月3號上映
打擂台 6月4號上映
特工的特別任務 6月4號上映
異度公寓 6月4號上映
人在囧途 6月4號上映
精舞門2 6月10號上映
不是鬧著玩的 6月11號上映
驚情 6月11號上映
羅賓漢 6月11號上映
分手說愛你 6月11號上映
北緯31度 6月11號上映
2010南非世界盃足球賽(3D) 6月11號上映
公開的日記 6月12號上映
香奈爾密秘情史 6月12號上映
搖擺DE婚約 6月13號上映
活該你單身 6月13號上映
無米樂 6月13號上映
玩具總動員3 6月16號上映
諜海風雲 6月17號上映
小題大作 6月18號上映
海洋天堂 6月18號上映
志明與春嬌 6月18號上映
功夫夢 6月22號上映
決戰剎馬鎮 6月22號上映
葉問前傳 6月25號上映
80`s 後 6月25號上映
海上傳奇 6月25號上映
無人駕駛 7月2號上映
嘻游記 7月2號上映
槍王之王 7月2號上映
驚情 7月2號上映
明天是否來臨 7月5號上映
危情諜戰 7月6號上映
唐伯虎點秋香2 7月9號上映
長江七號愛地球 7月9號上映
出水芙蓉 7月9號上映
夢回金沙城 7月10號上映
黑色閃電 7月15號上映
西域傳奇 7月15號上映
第一書記 7月15號上映
功夫俠 7月22號上映
唐山大地震 7月22號上映
七小羅漢 7月23號上映
等著你回來 7月28號上映
我的美女老闆 7月30號上映
深海探奇 7月30號上映
阿黛拉的非凡冒險 8月3號上映
全城戒備 8月6號上映
愛要向前沖 8月6號上映
歌舞青春 8月10號上映
戀愛通告 8月12號上映
近在直尺的愛戀 8月13號上映
荒村公寓 8月13號上映
翡翠明珠 8月13號上映
我的雷人男友 8月13號上映
怪物史瑞克4 8月16號上映
喋血孤城 8月19號上映
龍風店 8月19號上映
世博總動員 8月20號上映
敢死隊 8月20號上映
最後的風之子 8月23號上映
線人 8月24號上映
娜娜的玫瑰戰爭 8月26號上映
麻辣甜心 8月27號上映
盜夢空間 9月1號上映
一隻狗的大學時光 9月3號上映
初戀紅豆冰 9月9號上映
舉起手來2:追擊阿多丸號 9月9號上映
魔法師學徒 9月9號上映
酷玩青春 9月10號上映
西域傳奇 9月10號上映
我們戀愛吧 9月10號上映
山楂樹之戀 9月15號上映
大劫難 9月18號上映
舞出我人生:街舞 9月19號上映
精武風雲 陳真 9月21號上映
虎王歸來 9月22號上映
劍雨 9月28號上映
狄人傑之通天帝國 9月29號上映
米香 9月29號上映
天降美食 9月30號上映
熊出沒注意 10月1號上映
查理曼大帝密碼 10月1號上映
雙重追擊 10月2號上映
感染列島 10月4號上映
廬山戀2010 10月5號上映
絕命島 10月12號上映
異空危情 10月12號上映
外灘軼事 10月12號上映
悍將雙雄 10月12號上映
一不留神 10月12號上映
華爾街2 10月15號上映
我是植物人 10月15號上映
我的少女時代 10月15號上映
魔俠傳之堂吉可德 10月15號上映
芳心終結者 10月19號上映
愛情維修站 10月21號上映
完美嫁衣 10月21號上映
跟我的前妻談戀愛 10月22號上映
迷城 10月22號上映
天上人 10月23號上映
西風烈 10月28號上映
密室之不可告人 10月30號上映
功夫•詠春 11月2號上映
刀客外傳 11月5號上映
我的野蠻女友2 11月5號上映
日照重慶 11月5號上映
愛出色 11月5號上映
康定情歌 11月5號上映
西遊新傳 11月6號上映
危情時速 11月9號上映
愛情36計 11月9號上映
音樂人生 11月10號上映
老虎都要嫁 11月11號上映
貓頭鷹王國:守衛者傳奇 11月15號上映
截拳道 11月16號上映
哈利•波特與死亡聖器(上) 11月19號上映
生化危機:來生 11月20號上映
大玩家 11月25號上映
李小龍 11月25號上映
追蹤章魚保羅 11月30號上映
火線特工 11月30號上映
我的名字叫可汗 11月30號上映
在一起 12月1號上映
大笑江湖 12月3號上映
非常舞者 12月3號上映
趙氏孤兒 12月4號上映
讓子彈飛 12月16號上映
非誠勿擾2 12月22號上映
哥的傳說 12月24號上映
午夜心跳 12月24號上映
破碎的擁抱 12月28號上映
前度 12月30號上映
戀人絮語 12月31號上映
加快之前,忘記之後 12月31號上映
一路有你 12月31號上映
納尼亞傳奇3:黎明踏浪號 1月7號上映
創:戰紀 1月11號上映
新少林寺 1月19號上映
喜洋洋與灰太狼 1月21號上映
武林外傳 1月26號上映
老夫子之小水虎傳奇 1月27號上映
最強喜事 1月31號上映
神奇俠侶 2月1號上映
我愛HK開心萬歲 2月1號上映
我知女人心 2月1號上映
熊貓總動員 2月3號上映
戒煙不戒酒 2月3號上映
芳香之城傳奇 2月3號上映
青蜂俠 2月6號上映
將愛情進行到底 2月12號上映
再吻我一次 2月13號上映
遊客 2月13號上映
我們約會吧 2月14號上映
孤島驚魂 2月18號上映
激戰運鈔車 2月22號上映
芳香之城傳奇 2月22號上映
叢林有情狼 2月25號上映
關鍵第四號 2月26號上映
觀音山 3月3號上映
炫舞天鵝 3月4號上映
再吻我一次 3月4號上映
致命請柬 3月4號上映
百合 3月8號上映
激浪青春 3月8號上映
雲下的日子 3月8號上映
倖存日 3月8號上映
殲十齣擊 3月10號上映
尋龍奪寶 3月11號上映
奇襲60陣地 3月11號上映
驚沙 3月12號上映
大人物 3月15號上映
刀見笑 3月17號上映
財神客棧 3月17號上映
洛杉磯之戰 3月18號上映
戀愛SOS 3月20號上映
琴動我心 3月20號上映
房不剩防 3月22號上映
整編特工 3月22號上映
守望者:罪惡迷途 3月25號上映
誰主沉浮 3月31號上映
單身男女 3月31號上映
俠盜石川 3月31號上映
赤焰戰場 4月1號上映
硬漢2:奉陪到底 4月1號上映
宅男總動員 4月1號上映
夜驚魂 4月2號上映
奮斗 4月2號上映
甲天下 4月2號上映
蔡李佛-極限拳速 4月2號上映
歲歲清明 4月3號上映
囧探佳人 4月7號上映
西藏往事 4月8號上映
萬有引力 4月8號上映
里約大冒險(3D) 4月8號上映
青風亭 4月8號上映
隱婚男女 4月8號上映
戰國 4月12號上映
激戰運鈔車 4月12號上映
美少女特工隊 4月15號上映
普拉斯蒂奇號 4月18號上映
倩女幽魂 4月19號上映
不明身份 4月22號上映
關雲長 4月26號上映
B+偵探 4月29號上映
迷蹤:第九鷹團 4月29號上映
危情三日 4月29號上映
跟蹤孔令學 4月30號上映
勞拉的星星在中國 4月30號上映
倩女幽魂(87) 4月30號上映
報應 5月5號上映
大太陽 5月6號上映
雷神(3D) 5月8號上映
最愛 5月10號上映
蔡李佛拳 5月10號上映
宇宙英雄之超銀河傳說 5月10號上映
羌笛悠悠 5月10號上映
賽車風雲5 5月12號上映
不再讓你孤單 5月13號上映
宇宙英雄之超銀河傳說 5月13號上映
百年情書 5月13號上映
加勒比海盜4 5月20號上映
西柏坡 5月26號上映
你是哪裡人 5月27號上映
守護童年 5月27號上映
功夫熊貓2 5月28號上映
親親我 5月30號上映
《絕代:末代女土司》 6月2號上映
天際浩劫 6月3號上映
B區32號 6月3號上映
歲歲清明 6月3號上映
敏感事件 6月6號上映
消失的村莊 6月9號上映
超能游戲者 6月10號上映
終極快遞 6月10號上映
湘江北去 6月10號上映
完美的愛 6月12號上映
星海 6月14號上映
建黨偉業 6月15號上映
男得有愛 6月17號上映
誰主沉浮 6月21號上映
動物總動員(3D) 6月24號上映
重來 6月24號上映
假裝情侶 6月24號上映
奪命深淵 6月28號上映
秋之白華 6月28號上映
藏獒多吉 6月28號上映
財神客棧 6月28號上映
一路驚心 6月28號上映
飛天 7月1號上映
奪命心跳 7月1號上映
先驅者 7月1號上映
終極快遞 7月2號上映
武俠 7月4號上映
肩上蝶 7月8號上映
孤島驚魂 7月8號上映
魁撥 7月8號上映
戰略特勤組 7月10號上映
兔俠傳奇 7月11號上映
報應 7月12號上映
藏 獒多吉 7月12號上映
雞排英雄 7月12號上映
鋼的琴 7月15號上映
回馬槍 7月15號上映
一夜未了情 7月15號上映
變形金剛3(3D) 7月21號上映
賽爾號 7月28號上映
蛋炒飯 7月28號上映
熱浪球愛戰 7月29號上映
像小強一樣活著 7月29號上映
哈利波特與死亡聖器下(3Dimax) 8月4號上
映
愛到底 8月5號上映
驚悚之夜 8月5號上映
藍精靈 8月10號上映
摩爾庄園冰世紀 8月11號上映
無極限之名危情速遞 8月12號上映
竊聽風雲2 8月18號上映
無價之寶 8月19號上映
女巫季節 8月19號上映
夏日戀神馬 8月23號上映
巴黎寶貝 8月25號上映
源代碼 8月30號上映
幸福卡片 9月2號上映
舞力對決 9月8號上映
全球熱戀 9月9號上映
奪命深淵 9月9號上映
美國隊長 9月9號上映
追夢3DNA 9月9號上映
大武生 9月9號上映
無底洞 9月15號上映
英雄•喋血 9月15號上映
狂暴飛車(3D) 9月15號上映
孤膽特工 9月16號上映
無界之地 9月16號上映
挪威的森林 9月16號上映
無敵福壽祿 9月22號上映
紫宅 9月23號上映
亞瑟和它的迷你王國3 9月23號上映
追夢3DNA 9月23號上映
正•青春 9月23號 上映
地心歷險記2 9月23號上映
辛亥革命 9月23號上映
白蛇傳說 9月29號上映
永無止境 9月29號上映
少年岳飛傳奇 9月29號上映
畫壁 9月29號上映
雞媽鴨仔 9月30號上映
洛克王國•聖龍騎士 9月30號上映
夏日樂悠悠 9月30號上映
第一大總統 9月30號上映
闖堂免 10月1號上映
李獻記歷險計 10月3號上映
永無止境 10月13號上映
愛封了 10月13號上映
競雄女俠秋瑾 10月13號上映
一夜迷情 10月14號上映
黑客悲情 10月14號上映
堵車 10月14號上映
床下有人 10月14號上映
戀愛恐慌症 10月14號上映
假如沒有你 10月14 號上映
雙重身份 10月18號上映
幸福額度 10月20號上映
綠燈俠 10月20號上映
與時尚同居 10月21號上映
嘿•店 10月21號上映
黃沙武士 10月21號上映
夢游 10月27號上映
密室之不可靠岸 10月27號上映
猩球崛起 10月28號上映
星空 11月3號上映
轉山 11月3號上映
北角 11月4號上映
失戀33天 11月8號上映
鐵甲鋼拳 11月8號上映
光棍終結者 11月11號上映
驚天戰神 11月12號上映
精英部隊:大敵當前 11月11號上映
丁丁歷險記 11月15號上映
楊門女將之軍令如山 11月18號上映
午夜凶夢 11月18號上映
東成西就2011 11月24號上映
鴻門宴 11月24號上映
開心家族 11月25號上映
開心魔法 12月1號上映
遍地狼煙 12月2號上映
帕那索斯博士的奇幻秀 12月2號上映
極速天使 12月2號上映
賽車傳奇 12月2號上映
深度謎案 12月2號上映
三大傻大鬧寶萊塢 12月8號上映
追愛 12月9號上映
不怕賊惦記 12月9號上映
翻滾吧,阿信 12月9號上映
極速先鋒 12月9號上映
金陵十三釵 12月16號上映
龍門飛甲 12月16號上映
傾城之淚 12月22號上映
親密敵人 12月23號上映
極速天使 12月28號上映
雙人床條約 12月30號上映
2012來了 12月31號上映
絕錄求生 12月20號上映
大鬧天宮(3D) 1月12號上映
大魔術師 1月12號上映
大偵探福爾摩斯2 1月15號上映
胡桃夾子:魔境冒險 1月17號上映
逆戰 1月17號上映
變身男女 1月18號上映
親家過年 1月18號上映
八星報喜 1月20號上映
愛情真可怕 1月20號上映
自古英雄出少年之岳飛 1月22號上映
就是鬧著玩的 1月23號上映
超時空救兵 1月24號上映
飯局也瘋狂 1月23號上映
驚魂游戲 1月24號上映
變身男女 1月26號上映
諜中諜4 1月28號上映
奪命金 2月3號上映
豪門生死戀 2月8號上映
高海拔之戀2 2月9號上映
鐵血精英 2月9號 上映
我願意 2月10號上映
地心歷險記2 :神秘島 2月10號上映
獵物 2月10號上映
機械師 2月10號上映
夜店詭談 2月10號上映
豪門生死戀 2月12號上映
愛 2月13號上映
真心話大冒險 2月14號上映
浮出水面的影子 2月17號上映
鐵血精英 2月17號上映
快樂的大腳2 2月21號上映
烏龍戲鳳2012 2月22號上映
登陸之日 2月24號上映
雙城計中計 2月24號上映
倭寇的蹤跡 2月24號上映
新龍門客棧 2月24號上映
戰馬 2月28號上映
午夜微博 3月2號上映
桃姐 3月8號上映
情謎 3月8號上映
女人如花 3月8號上映
囧蛋奇兵 3月16號上映
嫁個100分男人 3月16號上映
初到東京 3月22號上映
晚秋 3月23號上映
春嬌與志明 3月29號上映
『貳』 什麼是批處理文件
批處理,也稱為批處理腳本,英文譯為BATCH,批處理文件後綴BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:每一行可視為一個命令,每個命令里可以含多條子命令,從第一行開始執行,直到最後一行結束,它運行的平台是DOS。批處理有一個很鮮明的特點:使用方便、靈活,功能強大,自動化程度高。我不想讓自己寫的教程枯燥無味,因為牽纏到代碼(批處理的內容算是代碼吧?)的問題本來就是枯燥的,很少有人能面對滿屏幕的代碼而靜下心來。所以我會用很多簡單實用的例子讓讀這篇教程的朋友去體會批處理的那四射的魅力,感受它那古靈精怪的性格,不知不覺中愛上批處理(暈,怎麼又是愛?到底批處理和愛有什麼關系?答案:沒有!)。再說句「閑話」:要學好批處理,DOS基礎一定要牢!當然腦子靈活也是很重要的一方面。
例一、先給出一個最easy的批處理腳本讓大家和它混個臉熟,將下面的幾行命令保存為name.bat然後執行(以後文中只給出代碼,保存和執行方式類似):
ping sz.tencent.com > a.txt
ping sz1.tencent.com >> a.txt
ping sz2.tencent.com >> a.txt
ping sz3.tencent.com >> a.txt
ping sz4.tencent.com >> a.txt
ping sz5.tencent.com >> a.txt
ping sz6.tencent.com >> a.txt
ping sz7.tencent.com >> a.txt
exit
是不是都能看的懂?是不是很easy?但它的作用卻是很實用的,執行這個批處理後,可以在你的當前盤建立一個名為a.txt的文件,它裡面記錄的信息可以幫助你迅速找到速度最快的QQ伺服器,從而遠離「從伺服器中轉」那一痛苦的過程。這里>的意思,是把前面命令得到的東西放到後面所給的地方,>>的作用,和>的相同,區別是把結果追加到前一行得出的結果的後面,具體的說是下一行,而前面一行命令得出的結果將保留,這樣可以使這個a.txt文件越來越大(想到如何搞破壞了??)。By the way,這個批處理還可以和其他命令結合,搞成完全自動化判斷伺服器速度的東東,執行後直接顯示速度最快的伺服器IP,是不是很爽?後面還將詳細介紹。
例二、再給出一個已經過時的例子(a.bat):
@echo off
if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif
a.bat
為什麼說這是個過時的例子呢?很簡單,因為現在已經幾乎沒有人用帶廣告的QQ了(KAO,我的QQ還顯示好友三圍呢!!),所以它幾乎用不上了。但曾經它的作用是不可小窺的:刪除QQ的廣告,讓對話框乾乾凈凈。這里用的地址是QQ的默認安裝地址,默認批處理文件名為a.bat,你當然可以根據情況自行修改。在這個腳本中使用了if命令,使得它可以達到適時判斷和刪除廣告圖片的效果,你只需要不關閉命令執行後的DOS窗口,不按CTRL+C強行終止命令,它就一直監視是否有廣告圖片(QQ也再不斷查看自己的廣告是否被刪除)。當然這個腳本佔用你一點點內存,呵呵。
例三,使用批處理腳本查是否中冰河。腳本內容如下:
@echo off
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit
這里利用了netstat命令,檢查所有的網路埠狀態,只需要你清楚常見木馬所使用的埠,就能很easy的判斷出來是否被人種了冰河。然這不是確定的,因為冰河默認的埠7626,完全可以被人修改。這里介紹的只是方法和思路。這里介紹的是方法和思路稍做改動,就變成可以檢查其他木馬的腳本了,再改動一下,加進去參數和埠及信息列表文件後,就變成自動檢測所有木馬的腳本了。呵呵,是不是很過癮?腳本中還利用了組合命令&&和管道命令|,後面將詳細介紹。
例四,借批處理自動清除系統垃圾,腳本如下:
@echo off
if exist c:\windows\temp\*.* del c:\windows\temp\*.*
if exist c:\windows\Tempor~1\*.* del c:\windows\Tempor~1\*.*
if exist c:\windows\History\*.* del c:\windows\History\*.*
if exist c:\windows\recent\*.* del c:\windows\recent\*.*
將以上腳本內容保存到autoexec.bat里,每次開機時就把系統垃圾給自動刪除了。這里需要注意兩點:一、DOS不支持長文件名,所以就出現了Tempor~1這個東東;二、可根據自己的實際情況進行改動,使其符合自己的要求。
怎麼樣,看到這里,你對批處理腳本是不是已經有點興趣了?是不是發現自己已經慢慢愛上了這個東東?別高興的太早,愛不是一件簡單的事,它也許能帶給你快樂和幸福,當然也能讓你痛苦的想去跳樓。如果你知道很難還敢繼續的話,I 服了 YOU!繼續努力吧,也許到最後你不一定得到真愛(真的有這可能,愛過的人都知道),但你可以體會到整個愛的過程,就是如此。 酸、苦和辣,有沒有甜天知道。
為什麼會把批處理和愛情扯上關系?不是我無聊,也不是因為這樣寫有趣多少,原因有二:其一,批處理和愛情有很多相同的地方,有些地方我用「專業」的行話解釋不清(我不懷疑自己的表達能力,而是事情本身就不好說清楚),說了=沒說,但用地球人都知道的愛情一比喻(愛情是什麼?我**怎麼知道!!),沒准你心裡一下就亮堂了,事半功倍,何樂而不為?其二,我這段時間狀態不是很好,感冒發燒頭疼鼻塞,但主要還是感情上精神摧殘,搞的人煩透了,借寫教程之際感慨幾句,大家就全當買狗皮膏葯了,完全可以省略不看(也許還真有點效果----不至於讓你看著看著就睡著了,把頭磕了來找我報銷醫葯費)。說不定下次的教程中大家還會看到楊過、張無忌等金老前輩筆下的英雄們。
看過第一章的朋友,一定對批處理有了初步的印象,知道它到底是用來干什麼的了。但你知道運用批處理的精髓在哪裡嗎?其實很簡單:思路要靈活!沒有做不到的,只有想不到的。這和愛情就有點不同了,因為愛情的世界是兩個人的世界,一廂情願不叫愛情(補充:那叫單戀。廢話!)而批處理卻是一個人的天堂,你可以為所欲為,沒有達不到的境界!
批處理看起來雜亂無章,但它的邏輯性之強,絕對不比其他程序語言(如匯編)低,如果你寫的腳本是一堆亂麻,雖然每一行命令都正確,但從頭執行到尾後,不一定得到你想要的結果,也許是一屏幕的Bad command or fail name。這又和愛情有了共同點:按步驟來經營,缺少或增多的步驟都可能導致不想看見的結果。陷入愛河的朋友,相信沒有不肯定這句話的。我的愛情批處理,輸出的結果不是Bad command or fail name,屏幕是這么顯示的:『你的愛情』不是內部或外部命令,也不是可運行的程序或批處理文件。然後就是游標不停閃動,等待這下一次錯誤的輸入。
從這一章開始,將由淺入深的介紹批處理中常用的命令,很多常見DOS命令在批處理腳本中有這廣泛的應用,它們是批處理腳本的BODY部分,但批處理比DOS更靈活多樣,更具備自動化。要學好批處理,DOS一定要有比較扎實的基礎。這里只講述一些比較少用(相對來說)的DOS命令,常用命令如COPY、DIR等就不做介紹了(這些看似簡單的命令實際復雜的很,我怕自己都說不清楚!)。
例五,先看一個實例。這是一個很有意思的腳本,一個小巧實用的好東東,把批處理「自動化」的特點體現的淋漓盡致。先介紹一下這個腳本的來歷:大家都知道匯編程序(MASM)的上機過程,先要對源代碼進行匯編、連接,然後再執行,而這中間有很多環節需要輸入很多東西,麻煩的很(只有經歷過的朋友才懂得)。如何使這個過程變的簡單呢?在我們搞匯編課程設計時,我「被逼」寫了這個腳本,用起來很爽,呵呵。看看腳本內容:
@echo off
::close echo
cls
::clean screen
echo This programme is to make the MASM programme automate
::display info
echo Edit by CODERED
::display info
echo Mailto me : qqkiller***@sina.com
::display info
if "%1"=="" goto usage
::if input without paramater goto usage
if "%1"=="/?" goto usage
::if paramater is "/?" goto usage
if "%1"=="help" goto usage
::if paramater is "help" goto usage
pause
::pause to see usage
masm %1.asm
::assemble the .asm code
if errorlevel 1 pause & edit %1.asm
::if error pause to see error msg and edit the code
link %1.obj & %1
::else link the .obj file and execute the .exe file
:usage
::set usage
echo Usage: This BAT file name [asm file name]
echo Default BAT file name is START.BAT
::display usage
先不要被這一堆的東西給嚇怕了,靜下心來仔細的看(回想一下第一章中第一段是怎麼寫的!!)。已經給出了每一行命令的解釋,兩個冒號後面的內容為前一行內容解釋的E文(害怕E文的朋友也不用擔心,都很easy,一看就懂了,實在不懂了不會查詞典啊,這么懶?),在腳本執行時不顯示,也不起任何作用。倒數第5行行首有一個冒號,可不是筆誤哦!具體作用後面會詳細講到。此腳本中masm和link是匯編程序和連接程序,必須和edit程序以及你要編輯的源代碼(當然還有這個腳本,廢話!)一起在當前目錄中。使用這個批處理腳本,可以最大可能的減少手工輸入,整個過程中只需要按幾下回車鍵,即可實現從匯編源代碼到可執行exe文件的自動化轉換,並具備智能判斷功能:如果匯編時源代碼出現錯誤(匯編不成功),則自動暫停顯示錯誤信息,並在按任意鍵後自動進入編輯源代碼界面;如果源代碼匯編成功,則進行連接,並在連接後自動執行生成的exe文件。另外,由於批處理命令的簡單性和靈活性,這個腳本還具備良好的可改進性,簡單進行修改就可以符合不同朋友的上機習慣。正在學匯編的朋友,一定別忘了實習一下!
在這個腳本中出現了如下幾個命令:@、echo、::、pause、:和goto、%以及if。而這一章就將講述這幾個命令。
1、@
這個符號大家都不陌生,email的必備符號,它怎麼會跑到批處理中呢?呵呵,不是它的錯,批處理本來就離不開它,要不就不完美了。它的作用是讓執行窗口中不顯示它後面這一行的命令本身(多麼繞口的一句話!)。呵呵,通俗一點說,行首有了它的話,這一行的命令就不顯示了。在例五中,首行的@echo off中,@的作用就是讓腳本在執行時不顯示後面的echo off部分。這下懂了吧?還是不太懂?沒關系,看完echo命令簡介,自然就懂了。
2、echo
中文為「反饋」、「回顯」的意思。它其實是一個開關命令,就是說它只有兩種狀態:打開和關閉。於是就有了echo on和echo off兩個命令了。直接執行echo命令將顯示當前echo命令狀態(off或on)執行echo off將關閉回顯,它後面的所有命令都不顯示命令本身,只顯示執行後的結果,除非執行echo on命令。在例五中,首行的@命令和echo off命令聯合起來,達到了兩個目的:不顯示echo off命令本身,不顯示以後各行中的命令本身。的確是有點亂,但你要是練習一下的話,3分鍾包會,不會的退錢!
echo命令的另一種用法一:可以用它來顯示信息!如例五中倒數第二行,Default BAT file name is START.BAT將在腳本執行後的窗口中顯示,而echo命令本身不顯示(為什麼??)。
echo命令的另一種用法二:可以直接編輯文本文件。例六:
echo nbtstat -A 192.168.0.1 > a.bat
echo nbtstat -A 192.168.0.2 >> a.bat
echo nbtstat -A 192.168.0.3 >> a.bat
以上腳本內容的編輯方法是,直接是命令行輸入,每行一回車。最後就會在當前目錄下生成一個a.bat的文件,直接執行就會得到結果。
3、::
這個命令的作用很簡單,它是注釋命令,在批處理腳本中和rem命令等效。它後面的內容在執行時不顯示,也不起任何作用,因為它只是注釋,只是增加了腳本的可讀性,和C語言中的/*…………*/類似。地球人都能看懂,就不多說了。
4、pause
中文為「暫停」的意思(看看你的workman上),我一直認為它是批處理中最簡單的一個命令,單純、實用。它的作用,是讓當前程序進程暫停一下,並顯示一行信息:請按任意鍵繼續. . .。在例五中這個命令運用了兩次,第一次的作用是讓使用者看清楚程序信息,第二個是顯示錯誤的匯編代碼信息(其實不是它想顯示,而是masm程序在顯示錯誤信息時被暫它停了,以便讓你看清楚你的源代碼錯在哪裡)。
5、:和goto
為什麼要把這兩個命令聯合起來介紹?因為它們是分不開的,無論少了哪個或多了哪個都會出錯。goto是個跳轉命令,:是一個標簽。當程序運行到goto時,將自動跳轉到:定義的部分去執行了(是不是分不開?)。例五中倒數第5行行首出現一個:,則程序在運行到goto時就自動跳轉到:標簽定義的部分執行,結果是顯示腳本usage(usage就是標簽名稱)。不難看出,goto命令就是根據這個冒號和標簽名稱來尋找它該跳轉的地方,它們是一一對應的關系。goto命令也經常和if命令結合使用。至於這兩個命令具體用法,參照例五。
goto命令的另一種用法一:提前結束程序。在程序中間使用goto命令跳轉到某一標簽,而這一標簽的內容卻定義為退出。如:
……
goto end
……
:end
這里:end在腳本最後一行!其實這個例子很弱智,後面講了if命令和組合命令你就知道了。
6、%
這個百分號嚴格來說是算不上命令的,它只是批處理中的參數而已(多個%一起使用的情況除外,以後還將詳細介紹),但千萬別以為它只是參數就小看了它(看看例五中有多少地方用到它?),少了它批處理的功能就減少了51%了。看看例七:
net use \\%1\ipc$ %3 /u:"%2"
11.BAT \\%1\admin$\system32 /y
13.BAT \\%1\admin$\system32 /y
ipc2.BAT \\%1\admin$\system32 /y
NWZI.EXE \\%1\admin$\system32 /y
attrib \\%1\admin$\system32\10.bat -r -h -s
以上代碼是Bat.Worm.Muma病毒中的一部分,%1代表的IP,2%代表的username,3%代表password。執行形式為:腳本文件名 參數一 參數二 ……。假設這個腳本被保存為a.bat,則執行形式如下:a IP username password。這里IP、username、password是三個參數,缺一不可(因為程序不能正確運行,並不是因為少了參數語法就不對)這樣在腳本執行過程中,腳本就自動用用你的三個參數依次(記住,是依次!也是一一對應的關系。)代換1%、2%和3%,這樣就達到了靈活運用的目的(試想,如果在腳本中直接把IP、username和password都定義死,那麼腳本的作用也就被固定了,但如果使用%的話,不同的參數可以達到不同的目的,是不是更靈活?)。
關於這個參數的使用,在後續章節中還將介紹。一定要非常熟練才行,這需要很多練習過程,需要下點狠工夫!
這一章就寫到這里了。可能有朋友問了:怎麼沒介紹if命令?呵呵,不是我忘了,而是它不容易說清楚,下一章再講了!這一章講的這點東西,如果你是初學者,恐怕也夠消化的了。記住一句話:DOS是批處理的BODY,任何一個DOS命令都可以被用在批處理腳本中去完成特定的功能。到這里,你是否已經想到了用自己肚子里的東西去寫點帶有自動化色彩的東東呢?很簡單,就是一個DOS命令的集合而已,相信自稱為天才的你已經會把計算機等級考試上機試題中的DOS部分用批處理來自動化完成了。
煩!就好象一個半老女人到了更年期,什麼事都想嘮叨幾句,什麼事都感到不舒服,看誰誰不爽。明知山有虎,偏向虎山行,最後留下一身傷痕無功而返時,才發現自己竟然如此脆弱,如此渺小,如此不堪一擊。徘徊在崩潰的邊緣,突然回想起了自己最後一次扁人的那一刻,還真有點懷念(其實我很不喜歡扁人,更不喜歡被人扁)。我需要發泄,我用手指拚命的敲打著鍵盤,在一陣接一陣有節奏的聲音中,屏幕上出現了上面的這些文字。可難道這就是發泄的另一種方式嗎?中國人還是厲害,早在幾千年前孔老夫子就說過「唯女子與小人,難養也」,真**有先見之明,佩服!雖然是在發泄,不過大家請放心,以我的脾氣,既然決定寫這篇教程,就一定會盡力去寫好,寫完美,絕對不給自己留下遺憾,要不這教程就不是我寫的!
曾經有一篇經典的批處理教程出現在你的屏幕上,你沒有保存,直到找不到它的鏈接你才後悔莫及,人世間最大的痛苦莫過於此。如果上天能給你一個再看一次的機會,你會對那篇教程說三個字:我愛你!如果非要給這份愛加上一個期限,你希望是100年。因為100年後,你恐怕早已經掛了!而現在,你的屏幕上出現了這篇你正在看的批處理教程,雖然不如你曾經看的那篇經典,但如果勉強還過的去。你會愛它嗎?時間會有50年那麼長嗎?答案是:試試看吧。
批處理腳本中最重要的幾個命令,將在這一章詳細介紹,但是很遺憾,有些細節到現在我都沒掌握的很好,甚至還有些生分。如同還不太懂得愛一樣。但我一直都在努力,即使一直都沒有收獲。所以可能講的會比較籠統,但我會告訴你方法,剩下的就是時間問題了,需要自己去磨練。讓我們共同努力吧。冰凍三尺非一日之寒,滴水穿石非一日之功。有些事情,比如學批處理,比如愛一個人,都是不能速成的,甚至還會有付出艱辛而收獲為甚微的情況。再次重申,看這篇教程的時候,一定要靜下心來,除非你已經掌握了這篇教程的所有東西----但那也就不必看了,浪費時間!
7、if
接上一章,接著講if命令。總的來說,if命令是一個表示判斷的命令,根據得出的每一個結果,它都可以對應一個相應的操作。關於它的三種用法,在這里分開講。
(1)、輸入判斷。還是用例五裡面的那幾句吧:
if "%1"=="" goto usage
if "%1"=="/?" goto usage
if "%1"=="help" goto usage
這里判斷輸入的參數情況,如果參數為空(無參數),則跳轉到usage;如果參數為/?或help時(大家一般看一個命令的幫助,是不是輸入的/?或help呢,這里這么做只是為了讓這個腳本看起來更像一個真正的程序),也跳轉到usage。這里還可以用否定形式來表示「不等於」,例如:if not "%1"=="" goto usage,則表示如果輸入參數不為空就跳轉到usage(實際中這樣做就沒意義了,這里介紹用法,管不了那麼多了,呵呵。)是不是很簡單?其實翻譯成中文體會一下就understand了。
(2)、存在判斷。再看例二里這句:
if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif
如果存在那些gif文件,就刪除這些文件。當然還有例四,都是一樣的道理。注意,這里的條件判斷是判斷存在的,當然也可以判斷不存在的,例如下面這句「如果不存在那些gif文件則退出腳本」:if not exist C:\Progra~1\Tencent\AD\*.gif exit。只是多一個not來表示否定而已。
(3)、結果判斷。還是拿例五開刀(沒想到自己寫的腳本,竟然用處這么大,呵呵):
masm %1.asm
if errorlevel 1 pause & edit %1.asm
link %1.obj
先對源代碼進行匯編,如果失敗則暫停顯示錯誤信息,並在按任意鍵後自動進入編輯界面;否則用link程序連接生成的obj文件。這里只介紹一下和if命令有關的地方,&命令後面會講到。這種用法是先判斷前一個命令執行後的返回碼(也叫錯誤碼,DOS程序在運行完後都有返回碼),如果和定義的錯誤碼符合(這里定義的錯誤碼為1),則執行相應的操作(這里相應的操作為pause & edit %1.asm部分)。
另外,和其他兩種用法一樣,這種用法也可以表示否定。用否定的形式仍表達上面三句的意思,代碼變為:
masm %1.asm
if not errorlevel 1 link %1.obj
pause & edit %1.asm
看到本質了吧?其實只是把結果判斷後所執行的命令互換了一下,「if not errorlevel 1」和「if errorlevel 0」的效果是等效的,都表示上一句masm命令執行成功(因為它是錯誤判斷,而且返回碼為0,0就表示否定,就是說這個錯誤不存在,就是說masm執行成功)。這里是否加not,錯誤碼到底用0還是1,是值得考慮的兩個問題,一旦搭配不成功腳本就肯定出錯,所以一定要體會的很深刻才行。如何體會的深刻?練習!自己寫一個腳本,然後把有not和沒有not的情況,返回碼為0或1的情況分別寫進去執行(怎麼,嫌麻煩啊?排列組合算一下才四中情況你就嫌麻煩了?後面介紹管道命令和組合命令時還有更麻煩的呢!怕了?呵呵。),這樣從執行的結果中就能很清楚的看出這兩種情況的區別。
這種用errorlevel結果判斷的用法是if命令最難的用法,但也恰恰是最有用的用法,如果你不會用errorlevel來判斷返回碼,則要達到相同的效果,必須用else來表示「否則」的操作,是比較麻煩的。以上代碼必須變成:
masm %1.asm
if exist %1.obj link %1.obj
else pause & edit %1.asm
關於if命令的這三種用法就say到這里,理解很簡單,但應用時就不一定用的那麼得心應手,主要是熟練程度的問題。可能有的朋友有點驚訝,我怎麼沒給出類似下面三行的用法介紹,是因為下面三行是if命令幫助里對它自身用法的解釋,任何人只要一個「if /?」就能看到,我沒有必要在這里多費口舌;更重要的原因,是我覺得這樣介紹的不清楚,看的人不一定看的懂,所以我採用上面自己對if命令的理解來介紹。一定要注意的是,這三種用法的格式各不相同,而且也是不能改變的,但實際上可以互換(以為從本質上講,這三種用法都是建立在判斷的基礎上的,哲學教我們學會透過現象看事物本質!)。有興趣的朋友可以自己研究一下。
IF [NOT] ERRORLEVEL number do command
IF [NOT] string1==string2 do command
IF [NOT] EXIST filename do command
8、call
學過匯編或C的朋友,肯定都知道call指令表示什麼意思了,在這里它的意思其實也是一樣的。在批處理腳本中,call命令用來從一個批處理腳本中調用另一個批處理腳本。看例八(默認的三個腳本文件名分別為start.bat、10.bat和ipc.bat):
start.bat:
……
CALL 10.BAT 0
……
10.bat:
……
ECHO %IPA%.%1 >HFIND.TMP
……
CALL ipc.bat IPCFind.txt
ipc.bat:
for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k
有沒有看出什麼不對的地方?沒看出來啊?沒看出來就對了,其實就沒有不對的地方嘛,你怎麼看的出來!從上面兩個腳本,你可以得到如下信息:1、腳本調用可以靈活運用,循環運用、重復運用。2、腳本調用可以使用參數!關於第一點就不多說了,聰明的你一看就應該會,這里說一下第二點。
在start.bat中,10.bat後面跟了參數0,在執行時的效果,其實就是把10.bat里的參數%1用0代替。在start.bat中,ipc.bat後面跟了參數ipcfind.txt(一個文件,也可以做參數),執行時的效果,就是用ipc.bat中的每一行的三個變數(這里不懂沒關系,學過for命令後就懂了),對應代換ipc.bat中的%%i、%%j和%%k。這里參數調用是非常靈活的,使用時需要好好體會。在初學期間,可以先學習只調用腳本,至於連腳本的參數一起使用的情況,在後面的學習中自然就會有比較深刻的理解,這是因為當你已經可以靈活運用批處理腳本後,如何使代碼寫的更精簡更完美更高效就自然包括到了考慮的范圍,這時候你就會發現在調用腳本時直接加入參數,可以使代碼效率加倍。By the way,上面的這幾個腳本,都是Bat.Worm.Muma病毒的一部分,在後面的教程里,大家將有機會見到這個病毒的真面目。
那是不是說,在同一個目錄下至少存在兩個批處理腳本文件(只有一個你調用誰?)?呵呵,注意了,這句話錯了!!只有一個照樣可以調用----調用自身!看例九(默認腳本文件名a.bat):
net send %1 This is a call example.
call a.bat
這兩句一結合,效果自然不怎麼樣,因為只有一台機器來發消息,誰怕誰啊?我給你來個禮尚往來!可如果有100台機器同時執行,而且每台機器開10和窗口同時向一個目標機器發消息的話,呵呵。這里call a.bat的作用就是調用自身,執行完前一句net send命令後再調用自身,達到了循環執行的目的。
給出一個很有意思的腳本,有興趣的朋友可以實驗一下。例十(默認腳本文件名為a.bat):
call a.bat
一定要在DOS窗口下執行,否則只會看到一個窗口一閃而過,看不到最後結果。等執行完後,當腳本被執行了1260次,別忘了想一下到底是為什麼!愛情有時候跟這個腳本一樣,一旦陷入死循環,最後的結果都是意想不到的。只是愛情,絕對不會等到被毫無理由的循環這么多次,也許在第三次時就出現了love is aborted的提示。
9、find
這是一個搜索命令,用來在文件中搜索特定字元串,通常也作為條件判斷的鋪墊程序(我怎麼突然想起了這四個字?)。這個命令單獨使用的情況在批處理中是比較少見的,因為沒什麼實際意義。還是借例三來說明:
@echo off
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit
先用netstat命令檢查是否有冰河默認的埠7626在活動,並把結果保存到a.txt中。然後使用type命令列出a.txt中的內容,再在列出的內容中搜索字元串「7626」 ,發現有的話則提示中了冰河,否則退出。看,find命令其實就這么簡單,但有一點必須要注意到:如果不使用type命令列出a.txt中的內容,而是直接使用find命令在a.txt中找「7626」(find a.txt "7626" && echo "Congratulations! You have infected GLACIER!"),就必須得給