标题: [其他] [已解决]批处理不让call的内容影响原来的内容 [打印本页]
作者: smg无聊人 时间: 2021-1-31 16:45 标题: [已解决]批处理不让call的内容影响原来的内容
本帖最后由 smg无聊人 于 2021-2-1 16:06 编辑
前面几层楼结合8楼正解- ::主程序.bat
- @echo off
- color 07
- title 666
- set num=777
- call test.bat
- echo %num%
- ::应该为777
- pause
- exit
复制代码
- ::test.bat
- color 70
- title 999
- set num=888
- echo %num%
- pause
- goto :eof
复制代码
但是并不行
setlocal endlocal只对变量有效 对颜色标题所在目录等等无效
百度百科也这样说
而且我想要它保持在原来主程序那个窗口
title 是666
颜色07
不变成新的窗口,
也不产生新的窗口
意思是,在原来主程序的窗口,调用个子程序,
调用结束后,所有一切回到主程序的设置
比如颜色标题变量所在目录等等,一点都不变
求解
感激不尽
作者: flashercs 时间: 2021-1-31 17:02
- ::test.bat
- setlocal
- color 07
- title 999
- set num=888
- echo %num%
- pause
- endlocal
- goto :eof
复制代码
作者: smg无聊人 时间: 2021-1-31 19:01
回复 2# flashercs
之前我表达不准确,现在重新把问题描述了一遍
作者: flashercs 时间: 2021-1-31 19:05
回复 3# smg无聊人
你试过了吗?
作者: smg无聊人 时间: 2021-1-31 19:52
回复 4# flashercs
不好意思,现在在外面没有去试
回家后试试看
作者: 路过 时间: 2021-1-31 20:34
把调用代码放到setlocal...endlocal(相当于C语言中的括号)之间就行了。- ::主程序.bat
- @echo off
- color 07
- title 666
- set num=777
- setlocal
- call test.bat
- endlocal
- echo %num%
- ::应该为777
- pause
- exit
复制代码
作者: smg无聊人 时间: 2021-1-31 22:41
本帖最后由 smg无聊人 于 2021-1-31 22:55 编辑
回复 4# flashercs
不好意思
setlocal endlocal只对变量有效 对颜色标题变量所在等等无效
百度百科也这样说
作者: smg无聊人 时间: 2021-1-31 22:41
本帖最后由 smg无聊人 于 2021-1-31 22:57 编辑
回复 6# 路过
不好意思
setlocal endlocal只对变量有效 对颜色标题目录等等无效
百度百科也这样说
作者: xczxczxcz 时间: 2021-2-1 12:25
回复 8# smg无聊人
偶认为:
color title 是UI元素,进入call xxx.bat后bat并没有创建新的窗口,只是执行一些可以与主程序不相关的命令。
子bat其实在主窗口中运行,对ui的修改会影响前面的设置值。
set num 与ui无关 子bat可回调num变量值,也可以保留主bat中的值。(主程序最后显示num可为888,也可以777(不回调))。
要修改窗体显示元素,子bat结束后需再次设置。
作者: smg无聊人 时间: 2021-2-1 16:03
回复 9# xczxczxcz
谢谢你问题解决
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |