|
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
状态 离线
|
|
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 |
|