理解变量字符的截取功能
?http://www.cn-dos.net/forum/viewthread.php?tid=25746
::code by lxmxn @ cn-dos.net .::目的:幫助新手們更好的理解變量字符截取功能.
::Date 2006-12-16 .
::說明:有的變量截取之后值為空,這是正常的.
@echo off&setlocal EnableDelayedexpansion
::設置變量var的值:
set var=0123456789ABCDEF
call :begin
for /l %%a in (1,3,15) do (
? ? for /l %%b in (1,4,15) do (
? ?? ???call :printf %%a %%b
? ? )
)
call :begin
for /l %%a in (1,4,15) do (
? ? for /l %%b in (-1,-3,-15) do (
? ?? ???call :printf??%%a %%b
? ? )
)
call :begin
for /l %%a in (-2,-3,-15) do (
? ? for /l %%b in (1,4,15) do (
? ?? ???call :printf??%%a %%b
? ? )
)
call :begin
for /l %%a in (-1,-4,-15) do (
? ? for /l %%b in (-2,-3,-15) do (
? ?? ???call :printf??%%a %%b
? ? )
)
pause
endlocal&cls&echo.
echo 演示結束了,任意鍵退出……
pause>nul
goto :eof
::輸出結果:
:printf
? ? echo %%var:~%1,%2%%? ? ? ? 截取之后的字符為:? ? ? ? !var:~%1,%2!
? ? goto :eof
::清理屏幕:
:begin
? ? echo\&pause&cls&echo.
? ? echo ? ? ? ? ? ? ? ? ? ? ? ? 變量var的值為:? ? ? ? %var%
? ? echo.
? ? goto :eof
===
http://article.lre.cn/article/10001572.htm
從一個批處理程序中調用另一個批處理程序,而不會引起第一個批處理的中止。
語法:CALL[drive:][path]filename[batch-parameters]
參數:[drive:][path]filename,指定要調用的批處理程序的名字及其存放處。文件名必須用.BAT作擴展名。
batch-parameters 指定批處理程序所需的命令行信息。
CALL 注解
使用批處理參數:批處理參數可包含傳遞給批處理程序的任何信息,包括開關項、文件名、可替換參數%1至%9,以及環境變量,如%baud%。
使用管道和重定向符:在CALL命令中,不要用管道("|")和重定向符號("<<","<",">",和">>")。
遞歸調用:可以創建一個批處理程序調用它本身,但必須有一條exit命令。否則,父、子批處理程序將無限循環下去。
======================================================
CALL 例子
從另一批處理程序運行 CHECKNEW.BAT,在父批處理程序中可包含命令:call checknew
假設父批處理程序接收兩個可替換參數,并希望將它們傳給CHECKNEW.BAT。可在父批理程序中使用命令:call checknew %1%2
?
=================
@echo off
set str=123456789
echo 第一個字符為:%str:~0,1%
echo 頭兩個字符為:%str:~0,2%
echo 頭5個字符為:%str:~0,5%
echo 去掉最后一個字符后的字符串為:%str:~0,-1%
echo 去掉最后3個字符后的字符串為:%str:~0,-3%
echo 第4個字符為:%str:~3,1%
echo 第4個及其之后的3個字符為:%str:~3,4%
echo 最后一個字符為:%str:~-1%
echo 最后一個字符為:%str:~-1,1%
echo 最后一個字符為:%str:~-1,2%
echo 倒數第4個字符為:%str:~-4,1%
echo 倒數第4個及其之后的字符為:%str:~-4%
echo 倒數第4個及其之后的1個字符為:%str:~-4,2%
echo 倒數第4個及其之后的2個字符為:%str:~-4,3%
pause
為了說明這個問題,我在這里把批處理取字符,做下進一步的解釋,希望對新手有所啟發
如下:
echo %var:~n,k%
我們在這里對每個參數做個說明:"%var",即我們要從中要截取字符的字符串." ~ "取字
符標志符(我是這么理解的),"n" 我們將其理解為指針,"k"我們將其理解為偏移地址.(注
:指針和偏移地址都是從零開始數的)
我們還是用namejm版主的例子做下說明:
@echo off
set str=123456789
rem 定義一個str字符串為123456789
echo 第一個字符為:%str:~0,1%
rem 指針為0,偏移地址為1,即從第0位開始,取1位
echo 頭兩個字符為:%str:~0,2%
rem 指針為0,偏移地址為2,即從第0位開始,取2位
echo 頭5個字符為:%str:~0,5%
rem??? 指針為0,偏移地址為5,即從第0位開始,取5位
echo 去掉最后一個字符后的字符串為:%str:~0,-1%
rem 當"k"為負值時,我們可以這樣理解:從指針開始處開始取其后面所有字符,然后減去
后面"abs(k)位"..所以這個句字我們可以做如下解釋:從第0位開始取其全部字符
為:123456789然后從后面減去abs(k)位,所以最后結果為:12345678
echo 去掉最后3個字符后的字符串為:%str:~0,-3%
rem??? 該句解釋同上↑
echo 最后一個字符為:%str:~-1%
rem??? 參數"n,"和"k"都可以為缺省,缺省"n,"時可以理解為:從abs(k)位開始取其全部
echo 倒數第4個及其之后的字符為:%str:~-4%
rem??? 解釋同上↑
echo 最后一個字符為:%str:~-1,1%
rem??? n為負值時,表示從后面開始截取字符,取k位(此時n應從1開始數)
echo 最后一個字符為:%str:~-1,2%
rem??? 解釋同上↑
echo 倒數第4個字符為:%str:~-4,1%
rem??? 解釋同上↑
echo 倒數第4個及其之后的1個字符為:%str:~-4,2%
rem??? 解釋同上↑
echo 倒數第4個及其之后的2個字符為:%str:~-4,3%
rem 解釋同上↑
pause
?
?
總結
以上是生活随笔為你收集整理的理解变量字符的截取功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批处理 正则表达式(findstr) 整
- 下一篇: Weblogic下创建JMS消息服务