中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-25 22:15
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行
DOS批处理 & 脚本技术(批处理室) » [探讨][征集][去变量左右、首尾空格的方法]
可打印版本  7,655 / 28
第1楼 redtek 发表于 2006-11-29 02:43
金牌会员 发帖 1,147 积分 2,902
[探讨][征集][去变量左右、首尾空格的方法]
去左、右含有空格的变量试验 与 另类方法实现演示

(测试版本: Windows CMD Shell )
(      纯dos下此代码无效)

(特殊特号等意外问题下面代码中不考虑,只演示原理)



(这篇贴子的原由:在纯DOS交流区看到一遍“如何忽略掉用户输入路径前后的空格?”的属于CMD Shell内容的文章)

(        原提问贴:http://www.cn-dos.net/forum/viewthread.php?tid=25062&sid=qljZ68)
(        以致于对 CMD Shell 感兴趣的网友没有注意到纯DOS区内的非纯DOS内容)
(        贴子发错了讨论区,就象是把重要的财务部收的文件直接放到了售后服务部…)
(        建议:要快速的及时解决问题,请千万不要把贴子发错讨论区~:)







代码全加了注释,以方便阅读:)


(输出测试结果:)



但,上面代码的实现方法并不是唯一,也不是最简单的方法,它只代表一种另类的实现。
所以请不要当此贴为唯一的解决方案,也不要将此贴的方法完全认为是正确的。


(此贴也为抛砖引玉,希望感兴趣的朋友继续增加不同的实现方法,越好玩越好~:)

[建议]请感兴趣的朋友一定要跟贴加入你常用的技巧,以方便入门的初学者参考和大家之间的交流,同时增加论坛人气~:)

[ Last edited by redtek on 2006-11-29 at 10:32 AM ]
第2楼 NaturalJ0 发表于 2006-11-29 03:35
银牌会员 发帖 533 积分 1,181
redtek 的方法很巧妙啊。

call set "去左空格后的变量=%%var:*%1=%1%%

这两个红色的地方想请教下。
第3楼 ccwan 发表于 2006-11-29 03:56
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
第4楼 redtek 发表于 2006-11-29 04:04
金牌会员 发帖 1,147 积分 2,902
call set "去左空格后的变量=%%var:*%1=%1%%中的 “*” 号:

原变量是: 
set "var= My name is Redtek "

那个 * 号就是相当于用 %1 (就是上面变量中的 My )来替换 var 变量中的 *%1(指 字符串 My 左边的一切字符)。
第5楼 NaturalJ0 发表于 2006-11-29 04:14
银牌会员 发帖 533 积分 1,181
经你提醒,想起 namejm 给我的去引号方法了,现在全看明白了。^_^
第6楼 redtek 发表于 2006-11-29 04:31
金牌会员 发帖 1,147 积分 2,902
NaturalJ0兄也把你的一些去空格的方法贴上吧,无论是VBS还是JS还是Debug等……
我们让这些操作的方法都全了吧~:)

这样又方便索引查找去空格的方法又提高大家交流的某个专项内容的热情~:)

[ Last edited by redtek on 2006-11-28 at 03:44 PM ]
第7楼 NaturalJ0 发表于 2006-11-29 04:48
银牌会员 发帖 533 积分 1,181
哇,你当我是高手啊。 o_O
其实 VBS JS DEBUG 我都不会的说。
第8楼 redtek 发表于 2006-11-29 04:51
金牌会员 发帖 1,147 积分 2,902
那些我也不会,哈哈……
第9楼 ccwan 发表于 2006-11-29 05:24
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
不瞒各位,偶也是都不会。
给大家看看我手底下全部的JS材料,别笑偶。

附件
.JS.rar (547 bytes)
第10楼 lxmxn 发表于 2006-11-29 05:45
版主 发帖 4,938 积分 11,386

  哇,还有这么多人和我一样,都不会哈~哈哈~

  Redtek 兄真是show得精彩,加分没商量~
第11楼 lxmxn 发表于 2006-11-29 05:55
版主 发帖 4,938 积分 11,386

  我加一个去掉全部空格的……
第12楼 electronixtar 发表于 2006-11-29 06:39
铂金会员 发帖 2,672 积分 7,493
其实用 vbs的ltrim 和 rtrim 和trim 就行鸟
第13楼 namejm 发表于 2006-11-29 07:36
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  去掉左侧空格1:

  去掉左侧空格2:

  去掉右侧空格1:

  去掉右侧空格2:

  去掉首尾空格1:

  去掉首尾空格2:

  去掉所有空格:

  以上代码能兼容除双引号外的其他特殊字符。

[ Last edited by namejm on 2007-6-21 at 06:58 PM ]
第14楼 redtek 发表于 2006-11-29 07:46
金牌会员 发帖 1,147 积分 2,902
欣赏~~版主的代码甚是精彩!!!
现在去空格的方法越来越全啦~:)))
第15楼 vkill 发表于 2006-11-29 08:02
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
sed,任何特殊字符都考虑

去掉左侧所有空格:
echo "%var%"|sed -e "s/^\x22//;s/\x22$//" -e "s/^*//"|more>test.txt
set /p var=<test.txt

去掉右侧所有空格:
echo "%var%"|sed -e "s/^\x22//;s/\x22$//" -e "s/*$//"|more>test.txt
set /p var=<test.txt

去掉首尾所有空格:
echo "%var%"|sed -e "s/^\x22//;s/\x22$//" -e "s/^*//;s/*$//"|more>test.txt
set /p var=<test.txt

去掉所有空格:
echo "%var%"|sed -e "s/^\x22//;s/\x22$//" -e "s/ //g"|more>test.txt
set /p var=<test.txt

[ Last edited by vkill on 2006-11-29 at 08:04 AM ]
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023