[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理不让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
不变成新的窗口,
也不产生新的窗口

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

求解
感激不尽
SMG无聊人

  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
复制代码
微信:flashercs
QQ:49908356

TOP

回复 2# flashercs


    之前我表达不准确,现在重新把问题描述了一遍
SMG无聊人

TOP

回复 3# smg无聊人


    你试过了吗?
微信:flashercs
QQ:49908356

TOP

回复 4# flashercs
不好意思,现在在外面没有去试
回家后试试看
SMG无聊人

TOP

把调用代码放到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
复制代码

TOP

本帖最后由 smg无聊人 于 2021-1-31 22:55 编辑

回复 4# flashercs


    不好意思
setlocal endlocal只对变量有效  对颜色标题变量所在等等无效
百度百科也这样说
SMG无聊人

TOP

本帖最后由 smg无聊人 于 2021-1-31 22:57 编辑

回复 6# 路过


     不好意思
setlocal endlocal只对变量有效  对颜色标题目录等等无效
百度百科也这样说
SMG无聊人

TOP

回复 8# smg无聊人

偶认为:
    color  title 是UI元素,进入call xxx.bat后bat并没有创建新的窗口,只是执行一些可以与主程序不相关的命令。
子bat其实在主窗口中运行,对ui的修改会影响前面的设置值。

set num 与ui无关 子bat可回调num变量值,也可以保留主bat中的值。(主程序最后显示num可为888,也可以777(不回调))。
要修改窗体显示元素,子bat结束后需再次设置。
1

评分人数

QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复 9# xczxczxcz
谢谢你问题解决
SMG无聊人

TOP

返回列表