中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 17:46
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 对for变量截取字符串的问题 查看 1,370 回复 5
楼 主 对for变量截取字符串的问题 发表于 2010-02-09 14:41 ·  中国 陕西 西安 电信
初级用户
★★
积分 128
发帖 122
注册 2009-09-21 06:24
16年会员
UID 152378
性别 男
状态 离线
有如下代码:

@echo off
setlocal enabledelayedexpansion
for %%a in (*.*) do (
set b=%%a
echo !b:~-3!
)
pause

不知道能否直接对%%a 进行字符串截取,而不使用另外一个变量?我试了几种方法好像都不行,请大侠们赐教!!
2 发表于 2010-02-09 15:07 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
你如果是要截取后缀名,直接echo %%~xa就可以了,

[ Last edited by bat-zw on 2010-2-9 at 15:10 ]
批处理之家新域名:www.bathome.net
3 发表于 2010-02-11 14:43 ·  中国 陕西 西安 电信
初级用户
★★
积分 128
发帖 122
注册 2009-09-21 06:24
16年会员
UID 152378
性别 男
状态 离线
谢谢大侠指点,但假如我现在不截取后缀名,只截取后缀名的最后2个字符,或者是文件名的前2个字符,应该怎么办呢?
4 发表于 2010-02-11 14:47 ·  中国 陕西 西安 电信
初级用户
★★
积分 128
发帖 122
注册 2009-09-21 06:24
16年会员
UID 152378
性别 男
状态 离线
又或者是对于一个普通的字符串来说,我可以任意截取,但不用一楼的方法,能实现吗?请大侠们指点!
5 发表于 2010-02-12 18:13 ·  中国 湖北 襄阳 老河口市 电信
初级用户
积分 175
发帖 45
注册 2007-08-04 16:16
19年会员
UID 94640
性别 男
状态 离线
for中所使用的变量 [%%i] 属于批处理中一种特殊的变量体,不能使用形同

%var:str1=str2% 的变量替换 只有使用[%]百分号和开启延迟环境变量扩

展后使用[!]英文感叹号引用的变量才可以进行变量替换
6 发表于 2010-02-13 13:25 ·  中国 陕西 西安 电信
初级用户
★★
积分 128
发帖 122
注册 2009-09-21 06:24
16年会员
UID 152378
性别 男
状态 离线
原来如此啊 多谢啦
论坛跳转: