
關于batman[原創(chuàng)]批處理實用技術有點建議最后由 yngwcc 于 -6-1 18:22http://bbs.bathome.net/thread-1145-1-1.html這個帖子的七、[談談截取字符命令] 我覺得應該改進一下%a:~b,c%假設a的字符數是n當n>b>=0時候 就是 從a字符的b+1位置開始獲取后面的所有字符當b<0時候 就是 從a的最后1個字符開始往頭獲取b個字符當c>0 的時候 就從a的第1個字符開始獲取c個字符當-n<c<0 的時候 就去掉a字符中的最后c個字符剩下的字符當b和c同時出現的時候 1.b<0 c<0 |b|>|c| 比如 a字符有12個b=-4c=-5 的話 那按上面的意思是b=-4就是取a字符的9-12位,c=-5 就是取b獲得字符的去掉后5位,那就沒有字符可以取了無論b為什么數時候 c不能為0 2.當b>0 c<0 時候|b|+|c|< n(a的字符數) b=7 比如 a字符有12個 c=-8 的話 b=7 就是取a的8-12位 c=-8的就是取b獲得字符的去掉后8位,那就沒有字符可以取了我覺得 為新手寫了個字符截取練習工具,代碼應該修改如下:@echo off&color 1f&mode con cols=90 lines=16:beginset tu=★★★★★★★★★★★★★★★■■■■■■■■■■■■■■■cls&echo.&echo原始圖案為:%tu%echo.&echo注意前面有15個五角星后面有15個方塊,等下截取后記得數一下。echo.&echo命令形式為:%%tu:~2,1%%,其中的2為第一個參數可負可正可為零,1為第二個參數可負可正不為零。echo.&echo參數2大于0 參數1小于0的時候,兩個參數的絕對值要小于30。echo.&echo兩個參數都小于0的時候,第一個參數的要比第二個參數小。echo.&echo為了方便重復練習沒有設置退出,要退出請直接關閉窗口。echo.&echo請按任意鍵開始練習。&pause>nulset a=&set b=&set c=cls&echo.&set /p a= 請輸入第一個參數(應為小于30的整數):echo %a:-=%|findstr [^0-9]&&goto wrongif %a% equ goto wrongif %a% geq 30 goto wrongcls&echo.&set /p b= 請輸入第二個參數(應為大于-30并不為零的整數):echo %b:-=%|findstr [^0-9]&&goto wrongif %b% equ goto wrongif %b% equ 0 goto wrongif %b% lss -30 goto wrongset /a c=30-a+bif %a% gtr 0 if %b% lss 0 if %c% leq 0 goto wrongcls&echo.&echo原始圖案為:%tu%echo.&echo你輸入第一個參數的截取命令是: %%tu:~%a%%%echo.&call,echo截取到的圖案是 :%%tu:~%a%%%echo.&echo你輸入第二個參數的截取命令是: %%tu:~,%b%%%echo.&call,echo截取到的圖案是 :%%tu:~,%b%%%echo.&echo你輸入兩個參數一起的截取命令是: %%tu:~%a%,%b%%%echo.&call,echo截取到的圖案是 :%%tu:~%a%,%b%%%echo.&echo請按任意鍵再次練習。&pause>nul&goto begin:wrongcls&echo.&echo輸入不合要求,請正確輸入。&ping /n 2 127.1 >nul&goto begin這樣的話 新手更加好看懂些,這些是本人愚見,有什么不對請大家執(zhí)教

