中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 16:15
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何截取变量中的倒数第二个字符串~? 查看 2,256 回复 25
16 发表于 2008-05-12 00:21 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
再来二个

@echo off
set var=afb dedf dflke yes mno
for %%a in (%var%) do set /a n+=1,m=n-1
for /f "tokens=%m% delims= " %%a in ("%var%") do echo %%a
pause


@echo off
set var=afb dedf dflke yes mno
for %%a in (%var%) do call set str=%%a %%str%%
for /f "tokens=2 delims= " %%a in ("%str%") do echo %%a
pause


[ Last edited by 26933062 on 2008-5-12 at 12:24 AM ]
致精致简!
17 发表于 2008-05-12 00:21 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
方法挺多的嗬。。。

shift开始就想了……不过感觉……移位次数等于 总长度-1
我改楼主的方法,执行是固定2次……

单独重次数分析,具体快慢就不知道了。
18 水一个: 发表于 2008-05-12 00:22 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
pusofalse兄弟学习认真,思路活跃,钻研刻苦,提高迅速,值得加分鼓励!!!
批处理之家新域名:www.bathome.net
19 发表于 2008-05-12 00:23 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
简直太强了。。一道题目竟有这么多解法,赞佩各位前辈的思维!
20 发表于 2008-05-12 00:24 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-12 12:22 AM:
pusofalse兄弟学习认真,思路活跃,钻研刻苦,提高迅速,值得加分鼓励!!!

多谢前辈赏识~ 我都不好意思了~ ^_^
21 发表于 2008-05-12 00:26 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by pusofalse at 2008-5-12 00:24:

多谢前辈赏识~ :D 我都不好意思了~ ^_^

不要不好意思了,兄弟cn-dos需要你这样的人,加油啊!!!
批处理之家新域名:www.bathome.net
22 发表于 2008-05-12 00:29 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by zw19750516 at 2008-5-12 12:26 AM:

不要不好意思了,兄弟cn-dos需要你这样的人,加油啊!!!

^_^ 我也只是在CN-DOS成张起来的而已~ 当然会出自己的一份力的~
23 发表于 2008-05-12 01:05 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
我也来一个

@echo off
set var=afb dedf dflke yes mno
set var=%var: =.%&call:lp %%var%%
echo %str:~1%
pause&goto :eof
:lp
if not defined str (set str=%~n1&call:lp %%str%%)else set str=%~x1
简单!简单!再简单!
24 发表于 2008-05-12 03:20 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
再来个另类点的。

@echo off
set "var=afb dedf dflke sd yes mno"
set var=%var: ="%
%var:*"=set "var=%
set var=%var:"= %
for %%a in (%var%) do set var=%%a
echo %var%
pause
致精致简!
25 发表于 2008-05-12 04:11 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
Originally posted by 26933062 at 2008-5-12 03:20 AM:
再来个另类点的。

@echo off
set "var=afb dedf dflke sd yes mno"
set var=%var: ="%
%var:*"=set "var=%
set var=%var:"= %
for %%a in (%var%) do set v ...


明白了。。。但是set 有这种用法吗~?
删除最前和最后面的?~

[ Last edited by pusofalse on 2008-5-12 at 04:16 AM ]
26 发表于 2008-05-12 11:09 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
Originally posted by 26933062 at 2008-5-12 03:20:
再来个另类点的。

@echo off
set "var=afb dedf dflke sd yes mno"
set var=%var: ="%
%var:*"=set "var=%
set var=%var:"= %
for %%a in (%var%) do set v ...

怎么红色这行没有set也可以呢,请解释一下
论坛跳转: