【正文】
,len% //從變量var的值的start位開始截取,一共截取len位。若start或len位負(fù)數(shù),表示從倒數(shù)第幾位開始截取或截取倒數(shù)幾位。位數(shù)的表示是從0開始的。@echo offset var=set a=%var:~1,2%echo %a%pausenull從第1位(也即第二個(gè)字符)開始,截取2個(gè)字符。%var:~5% //從第6開始,截取剩下所有字符。%var:~3% //截取倒數(shù)3位%var:~0,len% //截取從第一位開始,倒數(shù)第len位結(jié)束的字符。六、 批處理示例1. IFEXIST1) 首先用記事本在C:/,文件內(nèi)容如下: @echo off IF EXIST / TYPE / IF NOT EXIST / ECHO / does not exist 然后運(yùn)行它: C:/ 如果C:/,那么它的內(nèi)容就會(huì)被顯示出來(lái),如果不存在,批處理就會(huì)提示你該文件不存在。 2) ,內(nèi)容如下:@ECHO OFF IF EXIST /%1 TYPE /%1 IF NOT EXIST /%1 ECHO /%1 does not exist 執(zhí)行: C:/TEST2 該命令運(yùn)行結(jié)果同上。 說(shuō)明: (1) IF EXIST 是用來(lái)測(cè)試文件是否存在的,格式為 IF EXIST [路徑+文件名] 命令 (2) %1是參數(shù),DOS允許傳遞9個(gè)批參數(shù)信息給批處理文件,分別為%1~%9(%0表示test2命令本身) ,這有點(diǎn)象編程中的實(shí)參和形參的關(guān)系,%1是形參。3)更進(jìn)一步的,內(nèi)容如下: @echo off IF %1 == A ECHO XIAO IF %2 == B ECHO TIAN IF %3 == C ECHO XIN 如果運(yùn)行: C:/TEST3 A B C 屏幕上會(huì)顯示: XIAO TIAN XIN 如果運(yùn)行: C:/TEST3 A B 屏幕上會(huì)顯示 XIAO TIAN 在這個(gè)命令執(zhí)行過(guò)程中,DOS會(huì)將一個(gè)空字符串指定給參數(shù)%3。 2. IFERRORLEVEL示例:,內(nèi)容如下: @ECHO OFF XCOPY C:/ D:IF ERRORLEVEL 1 ECHO 文件拷貝失敗 IF ERRORLEVEL 0 ECHO 成功拷貝文件 然后執(zhí)行文件: C:/TEST4 如果文件拷貝成功,屏幕就會(huì)顯示成功拷貝文件,否則就會(huì)顯示文件拷貝失敗。 IF ERRORLEVEL 是用來(lái)測(cè)試它的上一個(gè)DOS命令的返回值的,注意只是上一個(gè)命令的返回值,而且返回值必須依照從大到小次序順序判斷。因此下面的批處理文件是錯(cuò)誤的: @ECHO OFF XCOPY C:/ D:/ IF ERRORLEVEL 0 ECHO 成功拷貝文件 IF ERRORLEVEL 1 ECHO 未找到拷貝文件 IF ERRORLEVEL 2 ECHO 用戶通過(guò)ctrlc中止拷貝操作 IF ERRORLEVEL 3 ECHO 預(yù)置錯(cuò)誤阻止文件拷貝操作 IF ERRORLEVEL 4 ECHO 拷貝過(guò)程中寫盤錯(cuò)誤 無(wú)論拷貝是否成功,后面的: 未找到拷貝文件 用戶通過(guò)ctrlc中止拷貝操作 預(yù)置錯(cuò)誤阻止文件拷貝操作 拷貝過(guò)程中寫盤錯(cuò)誤 都將顯示出來(lái)。 3. 以下就是幾個(gè)常用命令的返回值及其代表的意義:命令返回值信息backup0備份成功1未找到備份文件2文件共享沖突阻止備份完成3用戶用ctrlc中止備份4由于致命的錯(cuò)誤使備份操作中止diskp0盤比較相同1盤比較不同2用戶通過(guò)ctrlc中止比較操作3由于致命的錯(cuò)誤使比較操作中止4預(yù)置錯(cuò)誤中止比較diskcopy0盤拷貝操作成功1非致命盤讀/寫錯(cuò)2用戶通過(guò)ctrlc結(jié)束拷貝操作3因致命的處理錯(cuò)誤使盤拷貝中止4預(yù)置錯(cuò)誤阻止拷貝操作format0格式化成功3用戶通過(guò)ctrlc中止格式化處理4因致命的處理錯(cuò)誤使格式化中止5在提示proceed with format(y/n)?下用戶鍵入n結(jié)束xcopy0成功拷貝文件1未找到拷貝文件2用戶通過(guò)ctrlc中止拷貝操作5預(yù)置錯(cuò)誤阻止文件拷貝操作4拷貝過(guò)程中寫盤錯(cuò)誤4. IF STRING1 == STRING2,文件內(nèi)容如下: @echo off IF %1 == A formAT A: 執(zhí)行: C:/TEST5 A 屏幕上就出現(xiàn)是否將A:盤格式化的內(nèi)容。 注意:為了防止參數(shù)為空的情況,一般會(huì)將字符串用雙引號(hào)(或者其它符號(hào),注意不能使用保留符號(hào))括起來(lái)。 如:if [%1]==[A] 或者 if %1*==A* 5. GOTO,文件內(nèi)容如下: @ECHO OFF IF EXIST C:/ GOTO _COPY GOTO _DONE :_COPY COPY C:/ D:/ :_DONE 6. for建立C:/,文件內(nèi)容如下: @ECHO OFF FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C 運(yùn)行: C:TEST7 執(zhí)行以后,屏幕上會(huì)將C:盤根目錄下所有以BAT、TXT、SYS為擴(kuò)展名的文件內(nèi)容顯示出來(lái)(不包括隱藏文件)。 七、 bat小技巧1. 變量引用:使用一對(duì)%%windir% 變量%%windir%% 二次變量引用.%temp% 臨時(shí)文件目錄%windir% 系統(tǒng)目錄 %errorlevel% 退出代碼 2. 特殊字符:amp。字符第一條命令 amp。 第二條命令 [amp。 第三條命令...] 用這種方法可以同時(shí)執(zhí)行多條命令,而不管命令是否執(zhí)行成功。amp。amp。字符:第一條命令 amp。amp。 第二條命令 [amp。amp。 第三條命令...] 當(dāng)碰到執(zhí)行出錯(cuò)的命令后將不執(zhí)行后面的命令,如果一直沒有出錯(cuò)則一直執(zhí)行完所有命令;||字符:第一條命令 || 第二條命令 [|| 第三條命令...] 當(dāng)碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令;3. 在bat文件中引用該bat文件的文件名,則這個(gè)文件將會(huì)循環(huán)執(zhí)行,除非手動(dòng)終止。