做高端網(wǎng)站的網(wǎng)絡(luò)公司谷歌排名優(yōu)化入門教程
1.Echo 命令
打開回顯或關(guān)閉請(qǐng)求回顯功能,或顯示消息。
2.@ 命令
表示不顯示@后面的命令,但是會(huì)顯示結(jié)果
3.Goto和: 命令
:定義標(biāo)簽,goto跳轉(zhuǎn)到標(biāo)簽
4.Rem ::注釋命令
::不顯示不執(zhí)行,rem顯示不執(zhí)行
5.Pause 命令
暫停命令
6.Call 命令
調(diào)用本文件內(nèi)命令段,相當(dāng)于子程序.被調(diào)用的命令段以標(biāo)簽:label開頭,以命令goto :eof結(jié)尾。
eg:
解釋
Call :sub tmp.txt :sub Echo 刪除引號(hào): %~1 Goto :eof
7.start 命令:調(diào)用外部程序
8.choice 命令
CHOICE /C ab /N /M “選項(xiàng) 1 請(qǐng)選擇 a,選項(xiàng) 2 請(qǐng)選擇 b?!?br /> if %errorlevel%==“a” goto end
/C 創(chuàng)建選項(xiàng)列表ab默認(rèn)是 “YN”,/N 不顯示選項(xiàng)列表,/m 設(shè)置提示文字,/t 設(shè)置暫停時(shí)間后自動(dòng)選擇默認(rèn)項(xiàng),/d 設(shè)置默認(rèn)項(xiàng)
9.If 命令
判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令
if “參數(shù)”== “字符串” 待執(zhí)行的命令 :條件成立,運(yùn)行命令
if exist 文件名 待執(zhí)行的命令:如果有指定的文件,運(yùn)行命令
if errorlevel / if not errorlevel 數(shù)字 待執(zhí)行的命令:程序運(yùn)行時(shí)都會(huì)返回一個(gè)數(shù)字給DOS,稱為錯(cuò)誤碼errorlevel或稱返回碼,常見的返回碼為0、1
10.for 命令
/d僅為目錄
/R遞歸(文件名)
/L迭代數(shù)值范圍
/F迭代及文件解析
11.set 命令
set string=csdn 賦值,echo %string% 使用值
set /P INPUT= 設(shè)置為輸入值
12.net start 查看所有服務(wù)
13.tasklist 查看所有進(jìn)程
14.taskkill 結(jié)束進(jìn)程 taskkill /f /t /im “iex*”
/IM 指定要終止的進(jìn)程的映像名稱。通配符 '*'可用來指定所有任務(wù)或映像名稱。
/T 終止指定的進(jìn)程和由它啟用的子進(jìn)程。
/F 指定強(qiáng)制終止進(jìn)程。
二、如何在批處理文件中使用參數(shù)
批處理中可以使用參數(shù),一般從1%到 9%這九個(gè)
三、組合命令
1.& 第一條命令 & 第二條命令 [& 第三條命令…]
這種方法可以同時(shí)執(zhí)行多條命令,而不管命令是否執(zhí)行成功
2.&& 第一條命令 && 第二條命令 [&& 第三條命令…]
碰到執(zhí)行出錯(cuò)的命令后將不執(zhí)行后面的命令
3.││ 第一條命令 ││ 第二條命令 [││ 第三條命令…]
碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令
四、管道命令的使用
1.│ 第一條命令 │ 第二條命令 [│ 第三條命令…]
第一條命令的結(jié)果作為第二條命令的參數(shù)來使用
2.>、>>輸出重定向命令
>覆蓋內(nèi)容,>>追加內(nèi)容
robocopy 高級(jí)復(fù)制
五、常用命令
----------------命令----------------
Del:刪除文件
Copy:復(fù)制文件
Xcopy:復(fù)制文件夾
Md:創(chuàng)建文件夾
rd:刪除文件夾
ren:重命名文件(夾)
move:移動(dòng)文件(夾)
find:字符串查找
findstr:字符串查找增強(qiáng),可以進(jìn)行模式匹配搜索
pushd c:\mp3 保存當(dāng)前目錄,并切換當(dāng)前目錄為 c:\mp3
popd 恢復(fù)當(dāng)前目錄為剛才保存的 d:\mp4
----------------dir命令----------------
dir 顯示當(dāng)前目錄中的文件和子目錄
dir /a 顯示當(dāng)前目錄中的文件和子目錄,包括隱藏文件和系統(tǒng)文件
dir c: /a:d 顯示 C 盤當(dāng)前目錄中的目錄
dir c: /a:-d 顯示 C 盤根目錄中的文件
dir c:\ /b/p /b只顯示文件名,/p分頁顯示
dir?.exe /s 顯示當(dāng)前目錄和子目錄里所有的.exe文件
----------------其它----------------
@choice /t 10 /d y /n >nul 等待10秒
rd /s/q d:\temp 刪除d:\temp 文件夾及其子文件夾和文件
del /q/a/f/s d:\temp*.?刪除 d:\temp及子文件夾里面的所有文件,包括隱藏、只讀、系統(tǒng)文件,不包括子目錄
ren d:\temp tmp 支持對(duì)文件夾的重命名
cls命令 清屏
type *.txt 顯示當(dāng)前目錄里所有.txt文件的內(nèi)容
xcopy d:\mp3 e:\mp3 /s/e/i/y
復(fù)制 d:\mp3 文件夾、所有子文件夾和文件到 e:\ ,覆蓋已有文件
加 /i 表示目標(biāo)文件夾不存在就自動(dòng)新建一個(gè),否則會(huì)有詢問
----------------date和time命令----------------
date 顯示當(dāng)前日期,并提示輸入新日期,按"回車"略過輸入
date /t 只顯示當(dāng)前日期,不提示輸入新日期
time 顯示當(dāng)前時(shí)間,并提示輸入新時(shí)間,按"回車"略過輸入
time/t 只顯示當(dāng)前時(shí)間,不提示輸入新時(shí)間
----------------find命令------------------------
find “abc” c:\test.txt
在 c:\test.txt 文件里查找含 abc 字符串的行,如果找不到,將設(shè) errorlevel 返回碼為1
find /i “abc” c:\test.txt
查找含 abc 的行,忽略大小寫
find /c “abc” c:\test.txt
顯示含 abc 的行的行數(shù)
----------------for命令------------------------
循環(huán)命令
for %%i in (c: d: e: f:) do echo %%i
依次調(diào)用小括號(hào)里的每個(gè)字符串,執(zhí)行 do 后面的命令
注意%%i,在批處理中 for 語句調(diào)用參數(shù)用2個(gè)%
for %%i in (*.txt) do find “abc” %%i
對(duì)當(dāng)前目錄里所有的txt文件執(zhí)行 find 命令
for /r . %%i in (*.txt) do find “abc” %%i
在當(dāng)前目錄和子目錄里所有的.txt文件中搜索包含 abc 字符串的行
for /r . %%i in (.) do echo %%~pni
顯示當(dāng)前目錄名和所有子目錄名,包括路徑,不包括盤符
for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt
把 d:\mp3 及其子目錄里的mp3文件的文件名都存到 d:\mp3.txt 里去
for /l %%i in (2,1,8) do echo %%i
生成2345678的一串?dāng)?shù)字,2是數(shù)字序列的開頭,8是結(jié)尾,1表示每次加1
for /f %%i in (‘set’) do echo %%i
對(duì) set 命令的輸出結(jié)果循環(huán)調(diào)用,每行一個(gè)
for /f “eol=P” %%i in (‘set’) do echo %%i
eol忽略以 P 開頭的那幾行
for /f %%i in (d:\mp3.txt) do echo %%i
默認(rèn)不支持帶空格的名稱
for /f “delims=” %%i in (d:\mp3.txt) do echo %%i
delims支持帶空格的名稱
for /f “skip=5 tokens=4” %%a in (‘dir’) do echo %%a
skip跳過前面5行,tokens每行取第4列
啟動(dòng)服務(wù)
net start 查看啟動(dòng)中的服務(wù)
服務(wù)名啟動(dòng) net start “服務(wù)名”
服務(wù)名停止 net stop “服務(wù)名”
用sc可打開被禁用的服務(wù),語法是:【Start=號(hào)后面有空格】
創(chuàng)建服務(wù)
sc create test3 binPath= “C:\Users\win32srvDemo.exe”
配置服務(wù)
sc config 服務(wù)名 start= demand //手動(dòng)
sc config 服務(wù)名 start= auto //自動(dòng)
sc config 服務(wù)名 start= disabled //禁用
啟動(dòng)和結(jié)束
sc start 服務(wù)名
sc stop 服務(wù)名
運(yùn)維常用
1,顯示系統(tǒng)版本
@echo for each ps in getobject _ >ps.vbs
@echo (“winmgmts://./root/cimv2:win32_operatingsystem”).instances_ >>ps.vbs
@echo wscript.echo ps.caption^&" "^&ps.version:next >>ps.vbs
cscript //nologo ps.vbs & del ps.vbs
2,列舉進(jìn)程
@echo for each ps in getobject _ >ps.vbs
@echo (“winmgmts://./root/cimv2:win32_process”).instances_ >>ps.vbs
@echo wscript.echo ps.handle&vbtab&ps.name&vbtab&ps.executablepath:next >>ps.vbs
cscript //nologo ps.vbs & del ps.vbs
3,終止進(jìn)程
@echo for each ps in getobject _ >pk.vbs
@echo (“winmgmts://./root/cimv2:win32_process”).instances_ >>pk.vbs
@echo if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate:end if:next >>pk.vbs
要終止PID為123的進(jìn)程,使用如下語法:
cscript pk.vbs 123
如果顯示一個(gè)0,表示終止成功。
然后:
del pk.vbs
4,重啟系統(tǒng)
@echo for each os in getobject _ >rb.vbs
@echo (“winmgmts:{(shutdown)}!//./root/cimv2:win32_operatingsystem”).instances_ >>rb.vbs
@echo os.win32shutdown(2):next >>rb.vbs & cscript //nologo rb.vbs & del rb.vbs
5,列舉自啟動(dòng)的服務(wù)
@echo for each sc in getobject(“winmgmts://./root/cimv2:win32_service”).instances_ >sc.vbs
@echo if sc.startmode=“Auto” then wscript.echo sc.name^&" - "^&sc.pathname >>sc.vbs
@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs
6,列舉正在運(yùn)行的服務(wù)
@echo for each sc in getobject(“winmgmts://./root/cimv2:win32_service”).instances_ >sc.vbs
@echo if sc.state=“Running” then wscript.echo sc.name^&" - "^&sc.pathname >>sc.vbs
@echo next >>sc.vbs & cscript //nologo sc.vbs & del sc.vbs
7,顯示系統(tǒng)最后一次啟動(dòng)的時(shí)間
@echo for each os in getobject _ >bt.vbs
@echo (“winmgmts://./root/cimv2:win32_operatingsystem”).instances_ >>bt.vbs
@echo wscript.echo os.lastbootuptime:next >>bt.vbs & cscript //nologo bt.vbs & del bt.vbs
8、netsh
在遠(yuǎn)程shell中使用netsh首先要解決一個(gè)交互方式的問題。前面說過,很多shell不能再次重定向輸出輸出,所以不能在這種環(huán)境下交互地使用ftp等命令行工具。解決的辦法是,一般交互式的工具 都允許使用腳本(或者叫應(yīng)答文件)。比如ftp -s:filename。netsh也是這樣:
netsh -f filename。
netsh命令的功能非常多,可以配置IAS、DHCP、RAS、WINS、NAT服務(wù)器,TCP/IP協(xié)議,IPX協(xié)議,路由等。一般運(yùn)維,我們只需用netsh來了解目標(biāo)主機(jī)的網(wǎng)絡(luò)配置信息。
1,TCP/IP配置
echo interface ip >s
echo show config >>s
netsh -f s
del s
由此你可以了解該主機(jī)有多個(gè)網(wǎng)卡和IP,是否是動(dòng)態(tài)分配IP(DHCP),內(nèi)網(wǎng)IP是多少(如果有的話)。這個(gè)命令和ipconfig /all差不多。
注意,以下命令需要目標(biāo)主機(jī)啟動(dòng)remoteaccess服務(wù)。如果它被禁用,請(qǐng)先通過導(dǎo)入注冊(cè)表解禁,然后
net start remoteaccess
2,ARP
echo interface ip >s
echo show ipnet >>s
netsh -f s
del s
這個(gè)比arp -a命令多一點(diǎn)信息。
3,TCP/UDP連接
echo interface ip >s
echo show tcpconn >>s
echo show udpconn >>s
netsh -f s
del s
這組命令和netstat -an一樣。
4,網(wǎng)卡信息
如果netsh命令都有其他命令可代替,那它還有什么存在的必要呢?下面這個(gè)就找不到代替的了。
echo interface ip >s
echo show interface >>s
netsh -f s
del s
9、IPSec
首先需要指出的是,IPSec和TCP/IP篩選是不同的東西,大家不要混淆了。TCP/IP篩選的功能十分有限,遠(yuǎn)不如IPSec靈活和強(qiáng)大。下面就說說如何在命令行下控制IPSec。
XP系統(tǒng)用ipseccmd,2000下用ipsecpol。遺憾的是,它們都不是系統(tǒng)自帶的。ipseccmd在xp系統(tǒng)安裝盤的SUPPORT/TOOLS/SUPPORT.CAB中,ipsecpol在2000 Resource Kit里。而且,要使用ipsecpol 還必須帶上另外兩個(gè)文件:ipsecutil.dll和text2pol.dll。三個(gè)文件一共119KB。
IPSec的設(shè)置保存在注冊(cè)表中 (HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows/IPSec/Policy/Local),理論上可以通過修改注冊(cè)表來配置IPSec。但很多信息以二進(jìn)制形式存放,讀取和修改都很困難。相比之下, 上傳命令行工具更方便。
在設(shè)置IPSec策略方面,ipseccmd命令的語法和ipsecpol幾乎完全一樣,所以只以ipsecpol為例:
1,防御rpc-dcom攻擊
ipsecpol -p myfirewall -r rpc-dcom -f *+0:135:tcp *+0:135:udp *+0:137:udp *+0:138:udp *+0:139:tcp *+0:445:tcp *+0:445:udp -n BLOCK -w reg -x
這條命令關(guān)閉了本地主機(jī)的TCP135,139,445和udp135,137,138,445端口。
具體含義如下:
-p myfirewall 指定策略名為myfirewall
-r rpc-dcom 指定規(guī)則名為rpc-dcom
-f … 建立7個(gè)篩選器。*表示任何地址(源);0表示本機(jī)地址(目標(biāo));+表示鏡像(雙向)篩選。詳細(xì)語法見ipsecpol -?
-n BLOCK 指定篩選操作是"阻塞"。注意,BLOCK必須是大寫。
-w reg 將配置寫入注冊(cè)表,重啟后仍有效。
-x 立刻激活該策略。
2,防止被ping
ipsecpol -p myfirewall -r antiping -f *+0::icmp -n BLOCK -w reg -x
如果名為myfirewall的策略已存在,則antiping規(guī)則將添加至其中。
注意,該規(guī)則同時(shí)也阻止了該主機(jī)ping別人。
3,對(duì)后門進(jìn)行IP限制
假設(shè)你在某主機(jī)上安裝了DameWare Mini Remote Control。為了保護(hù)它不被別人暴破密碼或溢出,應(yīng)該限制對(duì)其服務(wù)端口6129的訪問。
ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.89+0:6129:tcp -n PASS -w reg -x
這樣就只有123.45.67.89可以訪問該主機(jī)的6129端口了。
如果你是動(dòng)態(tài)IP,應(yīng)該根據(jù)IP分配的范圍設(shè)置規(guī)則。比如:
ipsecpol -p myfw -r dwmrc_block_all -f *+0:6129:tcp -n BLOCK -w reg
ipsecpol -p myfw -r dwmrc_pass_me -f 123.45.67.*+0:6129:tcp -n PASS -w reg -x
這樣就允許123.45.67.1至123.45.67.254的IP訪問6129端口。
在寫規(guī)則的時(shí)候,應(yīng)該特別小心,不要把自己也阻塞了。如果你不確定某個(gè)規(guī)則的效果是否和預(yù)想的一樣,可以先用計(jì)劃任務(wù)"留下后路"。例如:
c:/>net start schedule
Task Scheduler 服務(wù)正在啟動(dòng) …
Task Scheduler 服務(wù)已經(jīng)啟動(dòng)成功。
c:/>time /t
12:34
c:/>at 12:39 ipsecpol -p myfw -y -w reg
新加了一項(xiàng)作業(yè),其作業(yè) ID = 1
然后,你有5分鐘時(shí)間設(shè)置一個(gè)myfw策略并測(cè)試它。5分鐘后計(jì)劃任務(wù)將停止該策略。
如果測(cè)試結(jié)果不理想,就刪除該策略。
c:/>ipsecpol -p myfw -o -w reg
注意,刪除策略前必須先確保它已停止。不停止它的話,即使刪除也會(huì)在一段時(shí)間內(nèi)繼續(xù)生效。持續(xù)時(shí)間取決于策略的刷新時(shí)間,默認(rèn)是180分鐘。
如果測(cè)試通過,那么就啟用它。
c:/>ipsecpol -p myfw -x -w reg
最后說一下查看IPSec策略的辦法。
對(duì)于XP很簡(jiǎn)單,一條命令搞定–ipseccmd show filters
而ipsecpol沒有查詢的功能。需要再用一個(gè)命令行工具netdiag。它位于2000系統(tǒng)安裝盤的SUPPORT/TOOLS/SUPPORT.CAB中。(已經(jīng)上傳了三個(gè)文件,也就不在乎多一個(gè)了。_)
netdiag需要RemoteRegistry服務(wù)的支持。所以先啟動(dòng)該服務(wù):
net start remoteregistry
不啟動(dòng)RemoteRegistry就會(huì)得到一個(gè)錯(cuò)誤:
[FATAL] Failed to get system information of this machine.
netdiag這個(gè)工具功能十分強(qiáng)大,與網(wǎng)絡(luò)有關(guān)的信息都可以獲取!不過,輸出的信息有時(shí)過于詳細(xì),超過命令行控制臺(tái)cmd.exe的輸出緩存,而不是每個(gè)遠(yuǎn)程cmd shell都可以用more命令來分頁的。
查看ipsec策略的命令是:
netdiag /debug /test:ipsec
然后是一長(zhǎng)串輸出信息。IPSec策略位于最后。
軟件安裝
一個(gè)軟件/工具的安裝過程,一般來說只是做兩件事:拷貝文件到特定目錄和修改注冊(cè)表。只要搞清楚具體的內(nèi)容,那么就可以自己在命令行下實(shí)現(xiàn)了。(不考慮安裝后需要注冊(cè)激活等情況)
WinPcap是個(gè)很常用的工具,但必須在窗口界面下安裝。在網(wǎng)上也可以找到不用GUI的版本(但還是有版權(quán)頁),其實(shí)我們完全可以自己做一個(gè)。
以WinPcap 3.0a 為例。通過比較安裝前后的文件系統(tǒng)和注冊(cè)表快照,很容易了解整個(gè)安裝過程。
除去反安裝的部分,關(guān)鍵的文件有三個(gè):wpcap.dll,packet.dll和npf.sys。前面兩個(gè)文件位于system32目錄下,第三個(gè)在system32/drivers下。而注冊(cè)表的變化是增加了一個(gè)系統(tǒng)服務(wù)NPF。注意, 是系統(tǒng)服務(wù)(即驅(qū)動(dòng))不是Win32服務(wù)。
作為系統(tǒng)服務(wù),不但要在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services下增加主鍵,在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/Root下也增加主鍵。而后者默認(rèn)只有 SYSTEM身份才可以修改。幸運(yùn)的是,并不需要手動(dòng)添加它,winpcap被調(diào)用時(shí)會(huì)自動(dòng)搞定。甚至完全不用手動(dòng)修改注冊(cè)表,所有的事winpcap都會(huì)自己完成,只需要將三個(gè)文件復(fù)制到合適的位置就行了。
作為范例,還是演示一下如何修改注冊(cè)表:利用前面說過的inf文件來實(shí)現(xiàn)。
[Version]
Signature="W I N D O W S N T WINDOWS NTWINDOWSNT"
[DefaultInstall.Services]
AddService=NPF,winpcap_svr
[winpcap_svr]
DisplayName=Netgroup Packet Filter
ServiceType=0x1
StartType=3
ErrorControl=1
ServiceBinary=%12%/npf.sys
將上面這些內(nèi)容保存為_wpcap_.inf文件。
再寫一個(gè)批處理_wpcap_.bat:
rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %CD%/wpcap.inf
del?wpcap.inf
if /i %CD%==%SYSTEMROOT%/system32 goto COPYDRV
copy packet.dll %SYSTEMROOT%/system32/
copy wpcap.dll %SYSTEMROOT%/system32/
del packet.dll
del wpcap.dll
:COPYDRV
if /i %CD%==%SYSTEMROOT%/system32/drivers goto END
copy npf.sys %SYSTEMROOT%/system32/drivers/
del npf.sys
:END
del %0
然后用winrar將所有文件(5個(gè))打包為自解壓的exe,并將『高級(jí)自解壓選項(xiàng)』->『解壓后運(yùn)行』設(shè)置為_wpcap_.bat,命令行的winpcap安裝包就制作完成了。
注意,批處理最后一行沒有回車符。否則會(huì)因?yàn)檎谶\(yùn)行而無法刪除自己。
所有的軟件安裝,基本上可以套用這個(gè)思路。但也有例外的,那就是系統(tǒng)補(bǔ)丁的安裝。
由于系統(tǒng)補(bǔ)丁有可能要替換正在被執(zhí)行或訪問的文件,所以用copy命令是不行的。
幸好,Windows補(bǔ)丁包支持命令行安裝。
比如:
KB824146.exe -n -z -q
-n 不保留備份
-z 不重起
-q 安靜模式
如果有一堆補(bǔ)丁要打,那么用RAR打包成自解壓文件,外加一個(gè)批處理。
for %%f in (KB???.exe) do %%f -n -z -q
for %%f in (KB???.exe) do del %%f
del %0
檢測(cè)指標(biāo)
10、刪除指定天以前的文件
@echo off
::需要Win2003/Vista/Win7系統(tǒng)自帶的forfiles命令的支持
rem 指定待刪除文件的存放路徑
set SrcDir=F:\RECORD
rem 指定天數(shù)
set DaysAgo=90
rem forfiles /p %SrcDir% /s /m?.?/d -%DaysAgo% /c “cmd /c del /f /q /a @path”
forfiles /p %SrcDir% /s /m?.?/d -%DaysAgo% /c “cmd /c del /f /q /a @path”
for files /p %SrcDir% /m /d -%DaysAgo% /c " if @ISDIR==TRUE rd /s /q @PATH"
pause
11、網(wǎng)絡(luò)管理
route add 192.168.0.0 mask 255.255.0.0 192.168.1.1 -p