『壹』 windows bat腳本怎麼寫
批處理之家
你就用記事本就可以編輯了。裡面輸入dos命令
最後,另存為*.bat的格式
【 echo 命令 】
打開回顯或關閉請求回顯功能,或顯示消息。如果沒有任何參數,echo 命令將顯示當前回顯設置。
語法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在實際應用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一
些命令到特定的文件中。
【 rem 命令 】
注釋命令,類似於在C語言中的/*--------*/,它並不會被執行,只是起一個注釋的作用,便於別人閱讀
和你自己日後修改。
:: 也具有rem的功能
但::和rem還是有區別的,當關閉回顯時,rem和::後的內容都不會顯示。但是當打開回顯時,rem和rem
後的內容會顯示出來,然而::後的內容仍然不會顯示。
Rem Message
Sample:@Rem Here is the description.
【 pause 命令 】
暫停命令。運行 Pause 命令時,將顯示下面的消息:
Press any key to continue. . .(或:請按任意鍵繼續. . .)
Sample:
@echo off
:begin
G:*.* d:\back
echo 請插入另一張光碟...
pause
goto begin
在這個例子中,驅動器 G 中磁碟上的所有文件均復制到d:\back中。顯示的注釋提示您將另一張光碟
盤放入驅動器 G 時,pause 命令會使程序掛起,以便您更換光碟,然後按任意鍵繼續處理。
【 call 命令 】
從一個批處理程序調用另一個批處理程序,並且不終止父批處理程序。call 命令接受用作調用目標的
標簽。如果在腳本或批處理文件外使用 Call,它將不會在命令行起作用。
語法
call [[Drive:][Path] FileName ] [:label [arguments]]
參數
[Drive:}[Path] FileName
指定要調用的批處理程序的位置和名稱。
【 start 命令 】
調用外部程序,所有的DOS命令和命令行程序都可以由start命令來調用。
如:start calc.exe 即可打開Windows的計算器。
常用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先順序類別開始應用程序
REALTIME 在 REALTIME 優先順序類別開始應用程序
WAIT 啟動應用程序並等候它結束
parameters 這些為傳送到命令/程序的參數
執行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。如果在命令
腳本內執行,該新行為則不會發生。
【 goto 命令 】
跳轉命令。程序指針跳轉到指定的標簽,從標簽後的第一條命令開始繼續執行批處理程序。
語法:goto label (label是參數,指定所要轉向的批處理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果這里的if、%1、%2你不明白的話,先跳過去,後面會有詳細的解釋
。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
標簽的名字可以隨便起,但是最好是有意義的字母啦,字母前加個:用來表示這個字母是標簽,goto
命令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣你別人看起來才會理解你的意圖啊。
【 set 命令 】
顯示、設置或刪除變數。
顯示變數:set 或 set s 前者顯示批處理當前已定義的所有變數及其值,後者顯示所有以s開頭的變數及值。
設置變數:set aa=abcd 此句命令便可向變數aa賦值abcd。如果變數aa已被定義,則aa的值被修改為abcd;若aa尚未定義,則此句命令即可定義新的變數aa,同時為變數aa賦予初始值abcd。
刪除變數:set aa= 此句命令即可刪除變數aa。若變數aa已被定義,則刪除變數aa;若aa尚未定義,則此句命令為實質意義。
需要說明的是,批處理中的變數是不區分類型的,不需要像C語言中的變數那樣還要區分int、float、char等。比如執行set aa=345後,變數aa的值既可以被視為數字345,也可以被視為字元串345。
set命令具有擴展功能,如用作交互輸入、字元串處理、數值計算等,屬於高級命令范疇。
[編輯本段]批處理符號簡介
【 回顯屏蔽 @ 】
表示不顯示@後面的命令,在入侵過程中(例如使用批處理來格式化敵人的硬碟)自然不能讓對方看到你使用的命令啦。
@用法舉例:通過運行批處理文件對比pause和@pause命令即可明了@的效果。
【 重定向1 >與>> 】
將輸出信息重定向到指定的設備或文件。系統默認輸出到顯示器。
如:echo aaaaa>a.txt 即可將本在顯示器上顯示的信息aaaaa輸出到文件a.txt中,屏幕上沒有任何顯示。如果文件a.txt本來已經存在,該命令將首先擦除a.txt中的所有信息,然後寫入信息aaaaa;若a.txt本來就不存在,該命令即可新建一個a.txt文件,並寫入信息aaaaa。
echo aaaaa>>a.txt 類似於echo aaaaa>a.txt。區別在於:如果a.txt本已存在,>a.txt會擦除a.txt中的原有內容,而>>a.txt並不擦除原有內容,僅在a.txt文件的末尾添加信息aaaaa。a.txt不存在時,二者沒有差別。
【 重定向2 < 】
將輸入信息來源重定向為指定的設備或文件。系統默認從顯示器讀取輸入信息。
重定向使用舉例:
=========================================
@echo off
echo abcdefg——這是文件a.txt中的信息>a.txt
echo 請任意輸入字元,以回車結束:
set /p ifo=
cls
echo 【 從屏幕獲得的輸入信息 】
echo %ifo%
set /p ifo=<a.txt
echo 【 從文件a.txt獲得的輸入信息 】
echo %ifo%
pause>nul
=========================================
讀者觀察命令與輸出即可體會到重定向的功能和效果。
【 管道符號 | 】
將管道符號前面命令的輸出結果重定向輸出到管道符號後面的命令中去,作為後面命令的輸入。使用格式為:command_1|command_2
管道符號使用舉例:
=========================================
@echo off
echo aaaa>a.txt
del /p a.txt
pause
=========================================
@echo off
echo aaaa>a.txt
echo y|del /p a.txt
pause
=========================================
對比以上兩個批處理執行結果,讀者即可明白管道符的用法和效果。
需要說明的是,上面del命令添加開關/p只是為了讓讀者明白管道符號的使用方法,實際刪除文件時不加/p開關即可實現無提示直接刪除。
【 轉義符 ^ 】
將特殊符號轉化為一般符號,即剝離特殊符號的特殊地位。特殊符號指:| & > <
比如,如果我們想輸出符號「>」,直接用命令 echo > 是不行的,必須修改為 echo ^> 。其餘幾個特殊符號類似需要有同樣的處理。
轉義字元使用舉例:
=========================================
@echo off
echo aaaa>a.txt
echo 第一句echo執行完畢
echo aaaa^>a.txt
echo 第二句echo執行完畢
pause
=========================================
比較上面的兩句echo,第一句echo將信息aaaa輸出到了文件a.txt,而第二句echo則在直接屏幕上顯示出aaaa>a.txt
【 邏輯命令符 】
邏輯命令符包括:&、&&、||
&-它的作用是用來連接n個DOS命令,並把這些命令按順序執行,而不管是否有命令執行失敗;
&&-當&&前面的命令成功執行時,執行&&後面的命令,否則不執行;
||-當||前面的命令失敗時,執行||後面的命令,否則不執行。
=========================================
@echo off
echo ^|^|
reg add HKCU /v try /f||echo **成功**
reg add HKCU1 /v try /f||echo **失敗**
echo ^&^&
reg delete HKCU /v try /f&&echo **成功**
reg delete HKCU /v try /f&&echo **失敗**
echo ^&
reg delete HKCU /v try /f&echo **成功**
reg delete HKCU /v try /f&echo **失敗**
pause
=========================================
執行reg add或reg delete後,系統會給出執行結果;我們通過echo命令也給出了「執行結果」。對比系統和我們自己給出的結果,既可以驗證邏輯命令的判斷機理。
[編輯本段]常用DOS命令釋義
【 文件夾管理 】
cd 顯示當前目錄名或改變當前目錄。
md 創建目錄。
rd 刪除一個目錄。
dir 顯示目錄中的文件和子目錄列表。
tree 以圖形顯示驅動器或路徑的文件夾結構。
path 為可執行文件顯示或設置一個搜索路徑。
x 復制文件和目錄樹。
【 文件管理 】
type 顯示文本文件的內容。
將一份或多份文件復制到另一個位置。
del 刪除一個或數個文件。
move 移動文件並重命名文件和目錄。(Windows XP Home Edition中沒有)
ren 重命名文件。
replace 替換文件。
attrib 顯示或更改文件屬性。
find 搜索字元串。
fc 比較兩個文件或兩個文件集並顯示它們之間的不同
【 網路命令 】
ping 進行網路連接測試、名稱解析
ftp 文件傳輸
net 網路命令集及用戶管理
telnet 遠程登陸
ipconfig顯示、修改TCP/IP設置
msg 給用戶發送消息
arp 顯示、修改區域網的IP地址-物理地址映射列表
【 系統管理 】
at 安排在特定日期和時間運行命令和程序
shutdown立即或定時關機或重啟
tskill 結束進程
taskkill結束進程(比tskill高級,但WinXPHome版中無該命令)
tasklist顯示進程列表(Windows XP Home Edition中沒有)
sc 系統服務設置與控制
reg 注冊表控制台工具
powercfg控制系統上的電源設置
對於以上列出的所有命令,在cmd中輸入命令+/?即可查看該命令的幫助信息。如find /?
[編輯本段]語句結構釋義
類似於C語言,批處理也有它的語句結構。批處理的語句結構主要有選擇結構(if語句)、循環結構(for語句)等。
【 if語句(選擇結構) 】
if語句實現條件判斷,包括字元串比較、存在判斷、定義判斷等。通過條件判斷,if語句即可以實現選擇功能。
1、字元串比較
if語句僅能夠對兩個字元(串)是否相同、先後順序進行判斷等。其命令格式為:
IF [not] string1 compare-op string2 command1 [else command2]
其中,比較操作符compare-op有以下幾類:
== - 等於
EQU - 等於
NEQ - 不等於
LSS - 小於
LEQ - 小於或等於
GTR - 大於
GEQ - 大於或等於
選擇開關/i則不區分字元串大小寫;選擇not項,則對判斷結果進行邏輯非。
字元串比較示例:
===============================================
@echo off
set str1=abcd1233
set str2=ABCD1234
if %str1%==%str2% (echo 字元串相同!) else (echo 字元串不相同!)
if /i %str1% LSS %str2% (echo str1^<str2) else (echo str1^>=str2)
echo.
set /p choice=是否顯示當前時間?(y/n)
if /i not %choice% EQU n echo 當前時間是:%date% %time%
pause>nul
===============================================
對於最後一個if判斷,當我們輸入n或N時的效果是一樣的,都不會顯示時間。如果我們取消開關/i,則輸入N時,依舊會顯示時間。
另外請注意一下幾個細節:1-echo str1^<str2和echo str1^>=str2;2-echo.。
2、存在判斷
存在判斷的功能是判斷文件或文件夾是否存在。其命令格式為:
IF [NOT] EXIST filename command1 [else command2]
===============================================
@echo off
if exist %0 echo 文件%0是存在的!
if not exist %~df0 (
echo 文件夾%~df0不存在!
) else echo 文件夾%~df0存在!
pause>nul
===============================================
這里注意幾個地方:
1-存在判斷既可以判斷文件也可以判斷文件夾;
2-%0即代表該批處理的全稱(包括驅動器盤符、路徑、文件名和擴展類型);
3-%~df0是對%0的修正,只保留了其驅動器盤符和路徑,詳情請參考for /?,屬高級批處理范疇;
4-注意if語句的多行書寫,多行書寫要求command1的左括弧必須和if在同一行、else必須和command1的右括弧同行、command2的左括弧必須與else同行、command1和command2都可以有任意多行,即command可以是命令集。
3、定義判斷
定義判斷的功能是判斷變數是否存在,即是否已被定義。其命令格式為:
IF [not] DEFINED variable command1 [else command2]
存在判斷舉例:
===============================================
@echo off
set var=111
if defined var (echo var=%var%) else echo var尚未定義!
set var=
if defined var (echo var=%var%) else echo var尚未定義!
pause>nul
===============================================
對比可知,"set var="可以取消變數,收回變數所佔據的內存空間。
4、結果判斷
masm %1.asm
if errorlevel 1 pause & edit %1.asm
link %1.obj
先對源代碼進行匯編,如果失敗則暫停顯示錯誤信息,並在按任意鍵後自動進入編輯界面;否則用link程序連接生成的obj文件,這種用法是先判斷前一個命令執行後的返回碼(也叫錯誤碼,DOS程序在運行完後都有返回碼),如果和定義的錯誤碼符合(這里定義的錯誤碼為1),則執行相應的操作(這里相應的操作為pause & edit %1.asm部分)。
另外,和其他兩種用法一樣,這種用法也可以表示否定。用否定的形式仍表達上面三句的意思,代碼變為:
masm %1.asm
if not errorlevel 1 link %1.obj
pause & edit %1.asm
【 for語句(循環結構) 】
for語句可以實現類似於C語言裡面的循環結構,當然for語句的功能要更強大一點,通過不同的開關可以實現更多的功能。for語句有多個開關,不同開關將會實現不同的功能。
1、無開關
無開關的for語句能夠對設定的范圍內進行循環,是最基本的for循環語句。其命令格式為:
FOR %%variable IN (set) DO command
其中,%%variable是批處理程序裡面的書寫格式,在DOS中書寫為%variable,即只有一個百分號(%);set就是需要我們設定的循環范圍,類似於C語言裡面的循環變數;do後面的command就是循環所執行的命令,即循環體。
無開關for語句舉例:
===============================================
@echo off
for %%i in (a,"b c",d) do echo %%i
pause>nul
===============================================
2、開關/L
含開關/L的for語句,可以根據set裡面的設置進行循環,從而實現對循環次數的直接控制。其命令格式為:
FOR /L %%variable IN (start,step,end) DO command
其中,start為開始計數的初始值,step為每次遞增的值,end為結束值。當end小於start時,step需要設置為負數。
含開關/L的for語句舉例(創建5個文件夾):
===============================================
@echo off
for /l %%i in (1,2,10) do md %%i
pause
===============================================
上例將新建5個文件夾,文件夾名稱依次為1、3、5、7、9。可以發現,%%i的結束值並非end的值10,而是不大於end的一個數。
3、開關/F
含開關/F的for語句具有最強大的功能,它能夠對字元串進行操作,也能夠對命令的返回值進行操作,還可以訪問硬碟上的ASCII碼文件,比如txt文檔等。其命令格式為:
FOR /F ["options"] %%variable IN (set) DO command
其中,set為("string"、'command'、file-set)中的一個;options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一個或多個的組合。各選項的意義參見for /f。一般情況下,使用較多的是skip、tokens、delims三個選項。
含開關/F的for語句舉例:
===============================================
@echo off
echo **No Options:
for /f %%a in ("1,2,10") do echo a=%%a
echo **Options tokens ^& delims:
for /f "tokens=1-3 delims=," %%a in ("1,2,10") do echo a=%%a b=%%b c=%%c
pause
===============================================
@echo off
echo 本文件夾裡面的文件有:
for /f "skip=5 tokens=3* delims= " %%a in ('dir') do (
if not "%%a"=="<DIR>" if not "%%b"=="位元組" if not "%%b"=="可用位元組" echo %%b
)
pause
===============================================
@echo off
echo 本文件夾裡面的文件有:
dir>c:\file.txt
for /f "skip=5 tokens=3* delims= " %%a in (c:\file.txt) do (
if not "%%a"=="<DIR>" if not "%%b"=="位元組" if not "%%b"=="可用位元組" echo %%b
)
del c:\file.txt
pause
===============================================
對於後面的兩個例子,其中options裡面的delims= 是可以刪除的,因為只要添加了/F開關系統就將delims的值默認為空格。
符號字元串中的最後一個字元星號,
那麼額外的變數將在最後一個符號解析之後
分配並接受行的保留文本。本例中也可以改為4,不過文件名中有空格的文件,只能顯示空格以前部分
同時我們也看到了,for語句的do後面的command也是可以分行的,只需要保證command的左括弧和do在同一行就可以了。
4、開關/D或/R
含開關/D或/R的for語句是與目錄或文件有關的命令,一般情況下很少使用。含開關/R的命令有時候被用於通過遍歷文件夾來查找某一個文件或文件夾,故而列舉此例。
含開關/R的for語句舉例(文件夾遍歷):
===============================================
@echo off
setlocal enabledelayedexpansion
FOR /R d: %%i IN (.) DO (
set dd=%%i
set "dd=!dd:~0,-1!"
echo !dd!
)
pause
exit
===============================================
握了這套命令,那麼你就離批處理達人不遠了!
『貳』 如何用bat寫用IE打開一個網址
可以在bat文件中通過start命令打開相應的網址即可。
start可握耐滲以直段脊接使用默認畝寬的瀏覽器打開相應的網站。格式
start網址
『叄』 如何在Windows中製作.bat文件
製作方法:
1、打開記事本,輸入扒余:CMD;
『肆』 怎麼樣製作bat文件
分類: 電腦/網路 >> 操作系統/系統故障
問題描述:
怎麼樣製作bat文件調用powerpoint
解析:
如果你的是powerpoint2003的話,其可執行程序名應該是POWERPNT.exe
批處理文件可以這樣做:
1、打開記事本,寫入以下內容:
@echo 運行Powerpoint
(這一行可以不拍吵遲輸入)
path C:\碰團Program Files\Microsoft Office 2003\Office\
(我OFFICE裝在C盤上,所以這里是「C:\Program Files\Microsoft Office 2003\Office\」具體路徑根據具體情況而定。)
powerpnt.exe
2、另存為時選擇文件類型為「所有(*.*)」,文件名為:文襲李件名.bat。然後存到你想要的地方就行了。
『伍』 想用BAT做一個訪問區域網的腳本
其實沒那麼復雜,假設伺服器共享文件夾是share,你要的代碼如下:
建議及說明:建議在伺服器給各用戶建立單獨帳號,假設伺服器上將D:\Share文件夾做了共享,Share下是各用戶的個人文件夾,已單獨設置了修改許可權,如Share下張三的個人文件夾是 張三 ,那麼應該將文件夾張三的修改許可權賦給張三的登陸帳號,而其他人即everyone僅賦給讀取許可權即可。以下登陸腳本,如果是發給各用戶使用,也應該將修改成各自的登陸帳號,提高伺服器安全性,剩下的你應該知道怎麼辦了~
@echo off
color 3f
title 伺服器共享登陸腳本
set user=
set pd=
set /p user=請輸入您的帳號:
set /p pd=請輸入您的密碼:
echo 登陸中,請稍候...
net use \\server\share %pd% /user:%user%
echo 登陸成功,任意鍵打開個人目錄....
pause>NUL
start 「\\server\share\%user%」
exit
==========以下是注銷伺服器代碼,前提是之前手動登陸未勾選過"記住密碼"============
@echo off
color 3f
title 伺服器共享注銷腳本
echo 注銷中,請稍候....
net use \\server\share /del /y
net use \\server\IPC$ /del /Y
echo 注銷成功,任意鍵退出....
pause>NUL
exit
『陸』 如何寫一個腳本可以批處理打開多個網頁
可以用start命令,但是網址不能加引號哦,正確方式如下:
1、@echooff
2、starthttp://www..com
3、starthttp://..com
4、pause
『柒』 bat腳本打開網頁
@echo off & title 逐一打開網頁 By 依夢琴瑤
::設置網址列表文件
set Url=D:\Test\URL_LISTS.TXT
for /f "delims=" %%a in ('type "%Url%"') do (
iexplore.exe "%%~a"
)
pause
如果上面的代碼無法實現手動關閉後,繼續打開網頁,那麼使用下面的代碼,以下代碼關閉窗口的操作交給腳本,您只需在腳本窗口中按一下任意鍵即可。
@echo off & title 逐一打開網頁 By 依夢琴瑤
::設置網址列表文件
set Url=D:\Test\URL_LISTS.TXT
for /f "delims=" %%a in ('type "%Url%"') do (
start "" iexplore.exe "%%~a"
echo 請按任意鍵來關閉瀏覽器窗口,並打開下一個網址
pause>nul
taskkill /f iexplore.exe>nul 2>nul
)
『捌』 我想寫個bat腳本怎麼寫
舉個例子,比如想把C盤下所有word格式文件復制到D盤,命令這么寫:
c:\*.doc d:\
批處理就是把命令復制到記事本里,保存的時候注意設置一下文件類型,在保存類型下選擇「所有文件」,這樣做是不讓系統自動加任何後綴名,自己在文件名後面輸入「文件名.bat」(不含引號)
『玖』 我想製作一個ipconfig /release ipconfig /renew的bat腳本。。怎麼做啊
打開記事本。
輸入這兩個命令
另存為bat文件即可
『拾』 求高手做個bat批量出打開記事本里的網站
BAT編寫了有黑窗口,用VBS編寫更好,使用完全是一樣的,滑鼠雙擊就可以了,下面的代碼調試通過,保證正確運行:
'說明,計數器文件在1.txt中,網址文件在2.txt中
DimWshShell,FileObj,TextObj,OpenNo
Dimi,url
'第一步,打開計數器文件,獲取計數值,並更新
SetFileObj=CreateObject("Scripting.FileSystemObject")
SetTextObj=FileObj.OpenTextFile("1.txt",1,False)
ifTextObj.AtEndOfStreamthen
OpenNo=0
else
OpenNo=TextObj.ReadLine
Endif
OpenNo=OpenNo+1
TextObj.Close
SetTextObj=FileObj.OpenTextFile("1.txt",2,True)
TextObj.WriteLineOpenNo
TextObj.Close
OpenNo=OpenNo-1
'msgbox"這是第"&如者openno&"次雙擊"
'第二步,打開網址文件,打開10個網頁
SetWshShell=WScript.CreateObject("WScript.Shell")
SetTextObj=FileObj.OpenTextFile("困橡笑2.txt",1,False)
'跳過前面雙擊時已經打開的網頁
fori=1toOpenNo*10
ifTextObj.AtEndOfStreamthenexitfor
url=TextObj.ReadLine
next
'開始打開網址
fori=1to10
ifTextObj.AtEndOfStreamthenexitfor
url=TextObj.ReadLine
'msgbox"即將打開的網址是:"&url
WshShell.Runurl
next
TextObj.Close
'第三步、判斷網址文件是否已經讀完,如果完了就修改打開次數為0
ifi<10then
SetTextObj=FileObj.OpenTextFile("1.txt",2,True)
汪含TextObj.WriteLine0
TextObj.Close
endif
運行上面代碼的條件:計數器文件在1.txt中,網址文件在2.txt中,在腳本文件的同一文件夾下。
運行上面代碼的方法:粘貼內容到記事本裡面,保存為一個VBS後綴的文件,例如X.VBS,然後就可以滑鼠雙擊了,千萬別要保存為.BAT文件!!!