中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 如何删除变量最后面的空格? 上一主题 | 下一主题
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『楼 主』:  如何删除变量最后面的空格?


@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 ]

2007-6-2 08:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

也可以为扩展名指定子字符串。

    %PATH:~10,5%

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

    %PATH:~-10%

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

    %PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。

2007-6-2 09:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 3 楼』:  

首先提出:
我不知道你 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

2007-6-2 10:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 4 楼』:  

有时候,老实一点未必就是愚钝的表现:
@echo off
    set /p str=输入带空格字符串:
:Loop
    if " " == "%str:~-1,1%" (set "str=%str:~0,-1%" && goto loop)
    echo %str%结束
    pause
goto :eof
特殊字符未作防范。

2007-6-2 11:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

扔给vbs去RTrim

2007-6-2 11:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  


sed "s/[ \t] *$//g;s/.*/开始&结束/" a.txt


2007-6-2 17:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 7 楼』:  

我以为你只是 想除掉 最后的 空格 ;
我写的那些想做到 去除 包括中间的空格的话;还需要一些改动;

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

如果只是为了处理 少部分; 还是有用的;

2007-6-2 19:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: