找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32754|回复: 12

[其他] [已解决]批处理怎样在2个cmd窗口下共享变量?

[复制链接]
发表于 2011-1-26 14:29:46 | 显示全部楼层 |阅读模式
在A CMD窗口下通过set env=1,用start启动另一个B CMD窗口,怎样在B中获取到A中得知的变量env呢?

[ 本帖最后由 liion631818 于 2011-1-27 09:21 编辑 ]

评分

参与人数 1PB +2 收起 理由
hanyeguxing + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-1-26 14:30:44 | 显示全部楼层
通过修改注册表的方法添加一个系统环境变量
 楼主| 发表于 2011-1-26 14:35:28 | 显示全部楼层
原帖由 Batcher 于 2011-1-26 14:30 发表
通过修改注册表的方法添加一个系统环境变量


不会啊~可否给个实例啊,注册表不太会
发表于 2011-1-26 15:11:04 | 显示全部楼层
发表于 2011-1-26 16:40:37 | 显示全部楼层
可不可以用clipboarddata.setdata把变量值存到剪贴板,然后再在B.BAT里读取呢?

A.BAT的内容
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p env=输入:
  3. mshta vbscript:clipboarddata.setdata("text","%env%")(close)
  4. pause
复制代码
B.BAT的内容不知道怎么写.
发表于 2011-1-26 17:59:41 | 显示全部楼层
将此变量存储、获取于批处理外,例如文件、注册表

评分

参与人数 1技术 +1 收起 理由
liion631818 + 1 解决方法很不错

查看全部评分

发表于 2011-2-8 06:37:53 | 显示全部楼层
原帖由 liion631818 于 2011-1-26 14:29 发表
在A CMD窗口下通过set env=1,用start启动另一个B CMD窗口,怎样在B中获取到A中得知的变量env呢?

是指這樣嗎?

a.cmd
  1. @echo off
  2. set env=Hello
  3. start b.cmd %env%
复制代码
b.cmd
  1. @echo off
  2. echo %1
  3. pause
复制代码
发表于 2011-3-7 23:06:43 | 显示全部楼层
A.bat    Demo1
  1. @echo off
  2. set /p env=
  3. start b.cmd %env%
复制代码
A.bat    Demo2
  1. @echo off
  2. set /p env=
  3. call b.cmd
复制代码
B.bat     Demo1
  1. @echo off
  2. Hello i'm b.bat
  3. echo %evn%
复制代码
 楼主| 发表于 2011-3-8 22:30:10 | 显示全部楼层
原帖由 Taurus 于 2011-2-8 06:37 发表

是指這樣嗎?

a.cmd@echo off
set env=Hello
start b.cmd %env%b.cmd@echo off
echo %1
pause


本意是指A CMD中和B CMD窗口中同时运行着bat,而B中想获取A中设置好的env后继续往下执行。
前面几楼有提到写注册表,写文件之类的方法,是可以解决我的问题的。
只是看看有没有更好的方法~~呵呵!!
发表于 2011-3-8 23:04:10 | 显示全部楼层
今天在system32文件夹淘宝,发现一个命令:setx,不知xp下可有此命令,若有,那必然一举取代通过wmic或reg来修改环境变量的老办法了!
  1. setx st32 %comspec:~0,-8%
  2. ::设置环境变量,立即生效!并可跨窗口读取(win7下亲测)
复制代码

昨天所说的有误,因为我是先setx设置变量,后打开cmd查找,才看到st32变量,我以为可以在原窗口立刻读取刚刚设定的变量,但是今天试了下不行

[ 本帖最后由 zm900612 于 2011-3-9 16:42 编辑 ]
 楼主| 发表于 2011-3-9 13:27:26 | 显示全部楼层

回复 10楼 的帖子

XP下没有啊~~
回去到win7上看看
发表于 2011-3-9 19:01:31 | 显示全部楼层
2个进程,各自内存空间独立,只能通过第三方来做。
文件,注册表,内存(剪贴板)等。
一般来说,多个CMD通信,如果信息量不大,我喜欢通过at命令添加一些计划任务,这些任务的指令里包含传递的信息,通过计划时间的不同来区别通信对象。

用这个的好处是可以在不同的计算机上通信,删除甄别方便,不像文件注册表等需要知道路径,而且没有IO错误。

[ 本帖最后由 caruko 于 2011-3-9 19:25 编辑 ]
发表于 2011-3-9 19:53:25 | 显示全部楼层

回复 10楼 的帖子

所以嘛,每次看到有人说“Win7里面批处理越来越不行了”,我总有一种想打人的冲动^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:05 , Processed in 0.028098 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表