中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-24 01:44
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结] 对变量进行截取 查看 1,118 回复 7
楼 主 [已结] 对变量进行截取 发表于 2008-02-27 00:50 ·  中国 陕西 西安 电信
初级用户
积分 67
发帖 40
注册 2008-01-31 23:57
18年会员
UID 109932
性别 男
状态 离线
比如
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 ]
2 发表于 2008-02-27 00:55 ·  中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
要想简洁,不如用vbs。cmd处理字符串的功能是最差的,你还想简洁?
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2008-02-27 00:57 ·  中国 陕西 西安 电信
初级用户
积分 67
发帖 40
注册 2008-01-31 23:57
18年会员
UID 109932
性别 男
状态 离线
这个与命令扩展,或变量延迟也许有关,我这方面没吃透,
望达人们指点迷津,偶万分感谢!!!
4 发表于 2008-02-27 00:59 ·  中国 陕西 西安 电信
初级用户
积分 67
发帖 40
注册 2008-01-31 23:57
18年会员
UID 109932
性别 男
状态 离线
谢谢Climbing
我对vbs不懂,
5 这样算复杂吗? 发表于 2008-02-27 02:27 ·  中国 湖北 武汉 黄陂区 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
@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 ]
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
Climbing +25 2008-02-27 10:11
oilio +6 2008-02-27 13:18
NeverAgain +2 2008-02-27 14:58
6 发表于 2008-02-27 10:10 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
lxmxn版主的答案实在是高。

我原来想象中还是很复杂,甚至想到用生成临时批处理的方式,没想到一个Call echo 就给解决了。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
7 这个算简洁了 发表于 2008-02-27 10:43 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
可以不用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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
NeverAgain +2 2008-02-27 11:42
8 发表于 2008-02-27 11:47 ·  中国 陕西 西安 电信
初级用户
积分 67
发帖 40
注册 2008-01-31 23:57
18年会员
UID 109932
性别 男
状态 离线
万分感谢:
热心的Climbing
渊博的lxmxn版主
简洁的plp626
学习了.
论坛跳转: