去左、右含有空格的变量试验 与 另类方法实现演示
(测试版本: 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 ]
(测试版本: Windows CMD Shell )
( 纯dos下此代码无效)
(特殊特号等意外问题下面代码中不考虑,只演示原理)
(这篇贴子的原由:在纯DOS交流区看到一遍“如何忽略掉用户输入路径前后的空格?”的属于CMD Shell内容的文章)
( 原提问贴:http://www.cn-dos.net/forum/viewthread.php?tid=25062&sid=qljZ68)
( 以致于对 CMD Shell 感兴趣的网友没有注意到纯DOS区内的非纯DOS内容)
( 贴子发错了讨论区,就象是把重要的财务部收的文件直接放到了售后服务部…)
( 建议:要快速的及时解决问题,请千万不要把贴子发错讨论区~:)
@echo %dbg% off
cls && echo. && echo.
:Redtek 2006 去左、右含有空格的变量试验与另类方法实现演示
:: 为演示与另做它用方便,所以“标签代码段”内的代码都可以独立使用
set "var= My name is Redtek "
rem 注:下面 Call 中的参数是无引号的,利用参数以逗号空格等做为分隔的特性
call :去左侧空格 %var%
echo. && echo.
call :去右侧空格 "%var%"
rem 去字符串中的左、右空格
rem 为演示与另做它用的方便,下面步骤将重新编写去左右空格的代码段,可以独立使用。
echo. && echo.
call :去两边空格 "%var%" %var%
goto :eof
:去左侧空格
rem 利用替换原理,将变量 var 中 以 ^%1变量内容开头字串的左边一切替换为^1本身
rem 因为被 Call 过来以后,参数中的空格就全“丢了”(利用参数分隔的特性),
rem 所以,自然那个要被定位的 ^%1 左边的空格也就全没了。
call set "去左空格后的变量=%%var:*%1=%1%%
echo 原字符串:
echo 去左侧空格后的字符串:
goto :eof
:去右侧空格
rem 将结果赋值给变量,这个变量可以随便调用。
rem ~nx 是利用了“将变量扩展到一个文件名”的特性,
rem 既然是合法的文件名,当然文件名后面的空格是无效且无用的~:)
set 去右空格后的变量=%~nx1
echo 原字符串:
echo 去右侧空格后的字符串:
goto :eof
:去两边空格
rem 原理:先去左边空格,再去右边空格,相当于上面演示代码的合用:)
rem 在假如没有上面两段去左和去右空格的代码情况下,下面独立演示:
set 去左右空格后的变量=%~nx1
call set "去左右空格后的变量=%%去左右空格后的变量:*%2=%2%%"
echo 原字符串:
echo 去左右空格后的字符串:
goto :eof
代码全加了注释,以方便阅读:)
(输出测试结果:)
原字符串:
去左侧空格后的字符串:
原字符串:
去右侧空格后的字符串:
原字符串:
去左右空格后的字符串:
但,上面代码的实现方法并不是唯一,也不是最简单的方法,它只代表一种另类的实现。
所以请不要当此贴为唯一的解决方案,也不要将此贴的方法完全认为是正确的。
(此贴也为抛砖引玉,希望感兴趣的朋友继续增加不同的实现方法,越好玩越好~:)
[建议]请感兴趣的朋友一定要跟贴加入你常用的技巧,以方便入门的初学者参考和大家之间的交流,同时增加论坛人气~:)
[ Last edited by redtek on 2006-11-29 at 10:32 AM ]


