注册
登录
论坛
搜索
帮助
导航
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
批处理之家
»
BAT求助&讨论
» 批处理setlocal endlocal是否不影响标号?
[新手上路]
批处理新手入门导读
[视频教程]
批处理基础视频教程
[视频教程]
VBS基础视频教程
[批处理精品]
批处理版照片整理器
[批处理精品]
纯批处理备份&还原驱动
[批处理精品]
CMD命令50条不能说的秘密
[在线下载]
第三方命令行工具
[在线帮助]
VBScript / JScript 在线参考
返回列表
发帖
yiwuyun
发短消息
加为好友
yiwuyun
当前离线
UID
69604
帖子
168
精华
0
积分
283
PB
208
技术
25
捐助
0
阅读权限
20
在线时间
87 小时
注册时间
2014-11-23
最后登录
2024-10-27
四级士官
帖子
168
积分
283
技术
25
捐助
0
注册时间
2014-11-23
1
楼
跳转到
»
正序看帖
打印
字体大小:
t
T
发表于 2014-11-28 11:27
|
只看该作者
[其他]
批处理setlocal endlocal是否不影响标号?
:EchoN
setlocal
:start
goto start
endlocal
exit /b 0
复制代码
setlocal是否不影响标号start? start仍然是全局的。
收藏
分享
yiwuyun
发短消息
加为好友
yiwuyun
当前离线
UID
69604
帖子
168
精华
0
积分
283
PB
208
技术
25
捐助
0
阅读权限
20
在线时间
87 小时
注册时间
2014-11-23
最后登录
2024-10-27
四级士官
帖子
168
积分
283
技术
25
捐助
0
注册时间
2014-11-23
3
楼
发表于 2014-11-28 13:10
|
只看该作者
:GetStringTrimSpace
setlocal
set string=!string!
call :GetStringLeftTrimSpace
set string=!stringLeftTrimSpace!
call :GetStringRightTrimSpace
set stringTrimSpace=!stringRightTrimSpace!
endlocal&set stringTrimSpace=%stringTrimSpace%
exit /b 0
:GetStringLeftTrimSpace
setlocal
set string=!string!
:startStringLeftTrimSpace
if "!string:~0,1!"==" " (
set string=!string:~1!
) else (
goto endStringLeftTrimSpace
)
goto startStringLeftTrimSpace
:endStringLeftTrimSpace
set stringLeftTrimSpace=!string!
endlocal&set stringLeftTrimSpace=%stringLeftTrimSpace%
exit /b 0
:GetStringRightTrimSpace
setlocal
set string=!string!
:startStringRightTrimSpace
if "!string:~-1,1!"==" " (
set string=!string:~0,-1!
) else (
goto endStringRightTrimSpace
)
goto startStringRightTrimSpace
:endStringRightTrimSpace
set stringRightTrimSpace=!string!
endlocal&set stringRightTrimSpace=%stringRightTrimSpace%
exit /b 0
这一段代码的作用是去掉字符串的左边和右边的空格。但是如果我把startStringLeftTrimSpace,startStringRightTrimSpace改成start
把endStringLeftTrimSpace,endStringRightTrimSpace改成end.我的代码运行就会出错。结果与自己要的不一样。这是什么原因喃?
TOP
CrLf
发短消息
加为好友
CrLf
当前离线
UID
30406
帖子
6388
精华
2
积分
18843
PB
15777
技术
982
捐助
100
阅读权限
255
在线时间
5536 小时
注册时间
2010-10-9
最后登录
2024-5-10
论坛巡查
帖子
6388
积分
18843
技术
982
捐助
100
注册时间
2010-10-9
2
楼
发表于 2014-11-28 11:59
|
只看该作者
会影响,批处理始终是顺序执行,前面的 setlocal 总是影响后面的语句
有一种例外,运行到脚本末尾、goto :eof或exit/b的时候会自动将当前函数或当前脚本产生的 setlocal 销毁
链接:
在线第三方命令行工具下载
bat、vbs、js 原生混编
TOP
返回列表
批处理专区: BAT CMD DOS
BAT求助&讨论
BAT教程&资料
BAT原创&转载
BAT新大陆
BAT转载代码
新手练功
出题挑战
有偿求助
第三方命令行
开源原创工具
iBAT
Take Command
其他脚本区
PowerShell求助&讨论
PowerShell教程&资料
PowerShell原创&转载
VBS求助&讨论
JS / JScript / JavaScript
VBS教程&资料
VBS原创&转载
UNIX/Linux Shell
Python
Perl
网络资源区
电脑技术研讨
精品软件交流
论坛事务区
站务交流
意见反馈
论坛公告
版主申请
交换链接
建站杂谈
活动专区
论坛总版规
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]