中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 19:41
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何删除变量最后面的空格?
可打印版本  850 / 6
第1楼 26933062 发表于 2007-06-02 08:02
银牌会员 发帖 879 积分 2,268
如何删除变量最后面的空格?

@echo off
set a="w e t "
要求 设变量 b=w e t
变量a不一定是三位数,请问有没有什么通用性的方法删除最后的空格?

::谢各位,其实我的本意是这样,从a.txt读取内容 设为变量a,然后去掉最后的所有空格.

::a.txt的内容如下 注:引号是我人为加的

" w e t hhh ggggg "

3742668
荣誉版主
的方法解决了我的问题,原来 if " " 双引号中间有个空格啊,我一直没搞懂判断变量等于空格这部分,原来是这样啊,......... 判断字符是否为空和是否为空格是有区别的. 谢了....
我用的是 if "%a:~-1,1%"=="" (set a=%a:~0,-1% && goto ss) 难怪不对.

bjsh
版主 的两个方法好像都不能达到我的目的,可能是我开始说的不够清楚吧


@echo off
for /f "delims=" %%i in (a.txt) do set a=%%i
:Loop
if " " == "%a:~-1,1%" (set "a=%a:~0,-1%" && goto loop)
echo %a%结束
pause




[ Last edited by 26933062 on 2007-6-2 at 03:26 PM ]
第2楼 slore 发表于 2007-06-02 09:55
铂金会员 发帖 2,478 积分 5,212
也可以为扩展名指定子字符串。

%PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,
使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%

会提取 PATH 变量的最后十个字符。

%PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。
第3楼 bjsh 发表于 2007-06-02 10:57
银牌会员 发帖 621 积分 2,000
首先提出:
我不知道你 set a="wet " 是想告诉我们有空格的存在而加的引号;
还是 本身就是这样的;

1) set "a=wet "

如果是从文本读入 ;
在某些情况下可以 让delims 默认为空格;
这样取得的 参数就是不带空格的 此时用 set 赋值; 就不会出现空格;

也可以通过上述的原理进行变通;
例如
可以
set "a=wet "
for /f %%a in ('echo %a%') do set b=%%a
不过这种方法效率有点低;

也可以利用 call

set "a=wet "
call :change %a%
pause & goto :eof
:change
set b=%1

2) set a="wet "
set a="wet "
for /f %%a in ('echo %a%') do set b=%%~a
第4楼 3742668 发表于 2007-06-02 11:21
荣誉版主 发帖 718 积分 2,013
有时候,老实一点未必就是愚钝的表现:

特殊字符未作防范。
第5楼 slore 发表于 2007-06-02 11:53
铂金会员 发帖 2,478 积分 5,212
扔给vbs去RTrim
第6楼 lxmxn 发表于 2007-06-02 17:49
版主 发帖 4,938 积分 11,386
第7楼 bjsh 发表于 2007-06-02 19:41
银牌会员 发帖 621 积分 2,000
我以为你只是 想除掉 最后的 空格 ;
我写的那些想做到 去除 包括中间的空格的话;还需要一些改动;

之所以 没有提出截取字符方法;
是因为我觉得他的效率太低;

如果只是为了处理 少部分; 还是有用的;
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023