Board logo

标题: [其他] [已解决]批处理不让call的内容影响原来的内容 [打印本页]

作者: smg无聊人    时间: 2021-1-31 16:45     标题: [已解决]批处理不让call的内容影响原来的内容

本帖最后由 smg无聊人 于 2021-2-1 16:06 编辑

前面几层楼结合8楼正解
  1. ::主程序.bat
  2. @echo off
  3. color 07
  4. title 666
  5. set num=777
  6. call test.bat
  7. echo %num%
  8. ::应该为777
  9. pause
  10. exit
复制代码
  1. ::test.bat
  2. color 70
  3. title 999
  4. set num=888
  5. echo %num%
  6. pause
  7. goto :eof
复制代码
但是并不行
setlocal endlocal只对变量有效  对颜色标题所在目录等等无效
百度百科也这样说
而且我想要它保持在原来主程序那个窗口
title 是666
颜色07
不变成新的窗口,
也不产生新的窗口

意思是,在原来主程序的窗口,调用个子程序,
调用结束后,所有一切回到主程序的设置
比如颜色标题变量所在目录等等,一点都不变

求解
感激不尽
作者: flashercs    时间: 2021-1-31 17:02

  1. ::test.bat
  2. setlocal
  3. color 07
  4. title 999
  5. set num=888
  6. echo %num%
  7. pause
  8. endlocal
  9. 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语言中的括号)之间就行了。
  1. ::主程序.bat
  2. @echo off
  3. color 07
  4. title 666
  5. set num=777
  6. setlocal
  7. call test.bat
  8. endlocal
  9. echo %num%
  10. ::应该为777
  11. pause
  12. 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