Board logo

标题: [已结] 对变量进行截取 [打印本页]

作者: NeverAgain     时间: 2008-2-27 00:50    标题: [已结] 对变量进行截取

比如
set a=2593dfddfdffdfer74872rrrtrtrt501522erere165451edfdfdfrtrtreeerererer54515498
set /p b=输入两个正整数用/隔开:
然后把变量b的第一个数作为x,第二个数作为y
这样截取
echo %b:~x,y%
请问如何截取?

说明,万不得已请不要用for,我就是用for +call感觉代码长才发此贴的.

[ Last edited by NeverAgain on 2008-2-27 at 11:49 AM ]
作者: Climbing     时间: 2008-2-27 00:55
要想简洁,不如用vbs。cmd处理字符串的功能是最差的,你还想简洁?
作者: NeverAgain     时间: 2008-2-27 00:57
这个与命令扩展,或变量延迟也许有关,我这方面没吃透,
望达人们指点迷津,偶万分感谢!!!
作者: NeverAgain     时间: 2008-2-27 00:59
谢谢Climbing
我对vbs不懂,
作者: lxmxn     时间: 2008-2-27 02:27    标题: 这样算复杂吗?


@echo off
set str=2593dfddfdffdfer74872rrrtrtrt501522erere165451edfdfdfrtrtreeerererer54515498
:begin
set /p b=输入两个正整数用/隔开:
if "%b%"=="" goto :EOF
for /f "delims=/ tokens=1,2" %%a in ("%b%") do call echo\%%str:~%%a,%%b%%
set b=
goto :begin
[ Last edited by lxmxn on 2008-2-27 at 02:29 AM ]
作者: Climbing     时间: 2008-2-27 10:10
lxmxn版主的答案实在是高。

我原来想象中还是很复杂,甚至想到用生成临时批处理的方式,没想到一个Call echo 就给解决了。
作者: plp626     时间: 2008-2-27 10:43    标题: 这个算简洁了

可以不用for,但...
@echo off
set a=12345678901234567890
set /p b=输入两个正整数(不大于9)用/隔开:
call echo %%a:~%b:~,1%,%b:~-1%%%%
pause
[ Last edited by plp626 on 2008-2-27 at 02:56 PM ]
作者: NeverAgain     时间: 2008-2-27 11:47
万分感谢:
             热心的Climbing
             渊博的lxmxn版主
             简洁的plp626
学习了.