Board logo

标题: 如何删除变量最后面的空格? [打印本页]

作者: 26933062     时间: 2007-6-2 08:02    标题: 如何删除变量最后面的空格?


@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 ]
作者: slore     时间: 2007-6-2 09:55
也可以为扩展名指定子字符串。

    %PATH:~10,5%

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

    %PATH:~-10%

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

    %PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。
作者: bjsh     时间: 2007-6-2 10:57
首先提出:
我不知道你 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
作者: 3742668     时间: 2007-6-2 11:21
有时候,老实一点未必就是愚钝的表现:
@echo off
    set /p str=输入带空格字符串:
:Loop
    if " " == "%str:~-1,1%" (set "str=%str:~0,-1%" && goto loop)
    echo %str%结束
    pause
goto :eof
特殊字符未作防范。
作者: slore     时间: 2007-6-2 11:53
扔给vbs去RTrim
作者: lxmxn     时间: 2007-6-2 17:49

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

作者: bjsh     时间: 2007-6-2 19:41
我以为你只是 想除掉 最后的 空格 ;
我写的那些想做到 去除 包括中间的空格的话;还需要一些改动;

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

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