所以我有 2 个 Bat 文件 A 和 B。A 运行,现在我使用命令启动 B。现在 A 和 B 同时运行。现在我想将变量 C 从 A 发送到 B。我尝试了 Call,但它只是打开 B 两次。感谢以后的回答!编辑* 无需其他文件
答案1
setx 命令将变量写入注册表,如果您想对所有批处理文件全局使用一个变量,则可以使用该命令。
SETX VAR_C somevalue
或者,您可以将变量写入文件并将其读回到另一个批处理文件中,即;
批处理文件A:
SET VAR_C=somevalue
ECHO %VAR_C% >%TMP%\var_c
批处理文件B:
SET /P VAR_C=<%TMP%\var_c
ECHO %VAR_C%
答案2
如果你没有使用 Windows 命令提示符,则无法同时运行 a 和 b。即使使用 call 命令A停止并且b运行完成返回A在真正的 DOS 中,在 call 命令之后。
在 Windows 命令提示符中运行时,它们是 2 个完全不同的进程,不共享内存、变量等。
批处理文件的工作方式是使用%1至%9
转移允许使用 10 个或更多的值,方法是将所有内容向下移动 1 并丢失最低值。
因此在 a.bat 中调用 b.bat “scooby doo” “was” “here”
现在在b.bat里面
%1 = "scooby doo"
%2 = "was"
%3 = "here"
选择
这放命令也存在
设置 C="史酷比"
回显 %c%
来自丑陋、有限和粗俗的部门
mkdir "\share" mkdir "\share\c" 然后在批处理文件中A您可以创建一个名为您想要共享的文件。
注意:在批处理文件中可能需要双百分号。
for %i in ("c:\x\c\*.*"); do set c="%~ni"
但是,您不能使用相同的特殊字符,例如句点。