Board logo

标题: [其他] [已解决]批处理怎样在2个cmd窗口下共享变量? [打印本页]

作者: liion631818    时间: 2011-1-26 14:29     标题: [已解决]批处理怎样在2个cmd窗口下共享变量?

在A CMD窗口下通过set env=1,用start启动另一个B CMD窗口,怎样在B中获取到A中得知的变量env呢?

[ 本帖最后由 liion631818 于 2011-1-27 09:21 编辑 ]
作者: Batcher    时间: 2011-1-26 14:30

通过修改注册表的方法添加一个系统环境变量
作者: liion631818    时间: 2011-1-26 14:35

原帖由 Batcher 于 2011-1-26 14:30 发表
通过修改注册表的方法添加一个系统环境变量


不会啊~可否给个实例啊,注册表不太会
作者: Batcher    时间: 2011-1-26 15:11

参考:
http://bbs.bathome.net/thread-2052-1-1.html
作者: semiuel    时间: 2011-1-26 16:40

可不可以用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的内容不知道怎么写.
作者: hanyeguxing    时间: 2011-1-26 17:59

将此变量存储、获取于批处理外,例如文件、注册表
作者: Taurus    时间: 2011-2-8 06:37

原帖由 liion631818 于 2011-1-26 14:29 发表 [url=redirect.php?goto=findpost&pid=69440&ptid=10905][/url]
在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
复制代码

作者: haiou327    时间: 2011-3-7 23:06

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%
复制代码

作者: liion631818    时间: 2011-3-8 22:30

原帖由 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后继续往下执行。
前面几楼有提到写注册表,写文件之类的方法,是可以解决我的问题的。
只是看看有没有更好的方法~~呵呵!!
作者: CrLf    时间: 2011-3-8 23:04

今天在system32文件夹淘宝,发现一个命令:setx,不知xp下可有此命令,若有,那必然一举取代通过wmic或reg来修改环境变量的老办法了!
  1. setx st32 %comspec:~0,-8%
  2. ::设置环境变量,立即生效!并可跨窗口读取(win7下亲测)
复制代码

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

[ 本帖最后由 zm900612 于 2011-3-9 16:42 编辑 ]
作者: liion631818    时间: 2011-3-9 13:27     标题: 回复 10楼 的帖子

XP下没有啊~~
回去到win7上看看
作者: caruko    时间: 2011-3-9 19:01

2个进程,各自内存空间独立,只能通过第三方来做。
文件,注册表,内存(剪贴板)等。
一般来说,多个CMD通信,如果信息量不大,我喜欢通过at命令添加一些计划任务,这些任务的指令里包含传递的信息,通过计划时间的不同来区别通信对象。

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

[ 本帖最后由 caruko 于 2011-3-9 19:25 编辑 ]
作者: Batcher    时间: 2011-3-9 19:53     标题: 回复 10楼 的帖子

所以嘛,每次看到有人说“Win7里面批处理越来越不行了”,我总有一种想打人的冲动^_^




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2