找回密码
 加入
搜索
查看: 215|回复: 11

[系统综合] [已解决] 程序在CMD执行时如何SET变量

[复制链接]
发表于 2024-3-22 13:11:35 | 显示全部楼层 |阅读模式
本帖最后由 yhxhappy 于 2024-3-23 20:29 编辑

我在写一个工具,在CMD中执行时,需要把工具读取到的信息转为 CMD变量,供批处理执行时调用。

以下示例是将 $DATE的值 转为 CMD的变量 %DATE%,不知道如何实现。
#AutoIt3Wrapper_Change2CUI=y
$DATE = @YEAR & @MON & @MDAY
ConsoleWrite("SET DateTest=" & $DATE)

发表于 2024-3-22 14:26:31 | 显示全部楼层
示例代码发上来...


---------------
 楼主| 发表于 2024-3-22 16:48:57 | 显示全部楼层

Hello, 有发示例代码,编译后在CMD中执行,会返回 DateTest=YYYYMMDD。我想实现 CMD命令 SET 的效果
让变量 %DateTest%的值等于示例中 $DATE 的值。

E:\>test.exe
SET DateTest=20240322
E:\>echo %DateTest%
%DateTest%  --没有给变量赋值
发表于 2024-3-22 17:02:33 | 显示全部楼层
yhxhappy 发表于 2024-3-22 16:48
Hello, 有发示例代码,编译后在CMD中执行,会返回 DateTest=YYYYMMDD。我想实现 CMD命令 SET 的效果
让变 ...

用CMD调用AU3变量?
为毛不用AU3执行CMD命令?
 楼主| 发表于 2024-3-22 17:06:03 | 显示全部楼层
邪恶海盗 发表于 2024-3-22 17:02
用CMD调用AU3变量?
为毛不用AU3执行CMD命令?

因为工具只是整个批处理中的一小部分,实现单一的功能,功能是读取一些信息转为CMD变量。
比如读取本机LAN MAC,转为CMD变量 %LANMAC% 供后续的 BAT 调用。
发表于 2024-3-23 09:52:25 | 显示全部楼层
附议海盗,感觉Au3操作批处理更简单,反向操作可能会有麻烦。
通常使用环境变量、注册表、文件中介等。
 楼主| 发表于 2024-3-23 14:13:47 | 显示全部楼层
将整个批处理都用AU3重写是可以的,但我这里情况是:批处理是其他人在用的,在某个节点读取某个信息遇到了困难,让我用AU3来实现这一部分功能。
现在AU3已经写好,能将读取到的信息输出到CMD控制台。
在批处理中也可以读取回显信息,截取想要的字符设置变量。

只是我想看下有没有更好的办法,通过AU3直接将“值”赋值给 CMD 中的变量。
看到过其他人写的程序,读取到了一排信息,十几行,全部实际的转换为 CMD 变量。
后面的批处理在调用时不需要再处理,直接使用 %xxx% 这种格式变量。
发表于 2024-3-23 15:18:23 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2024-3-23 20:27:38 | 显示全部楼层

感谢!

通过批处理的配合,达到了我想要的效果。
发表于 2024-3-25 09:40:46 | 显示全部楼层
本帖最后由 hnfeng 于 2024-3-25 09:48 编辑

8楼的方法使用 For 命令获取 AU3的exe命令返回的值。这也是我常用的方法,简单,不用生成临时文件。

还有一种方法,生成临时批处理并运行一下,变量就来了,对于一次需要多个返回变量的可能更高效
#AutoIt3Wrapper_Outfile=TempBat.exe
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Change2CUI=y

Local $DATE = @YEAR & @MON & @MDAY
Local $hTempBat=FileOpen("TempBat.bat", 2+512)
FileWrite($hTempBat, "SET DateTest=" & $DATE)
FileClose($hTempBat)
@echo off

echo 第1次,参数应该未定义
echo %DateTest%
echo;

TempBat.exe
call TempBat.bat

echo 第2次,已经获取参数值
echo %DateTest%

del TempBat.bat > nul

echo;&pause

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2024-3-25 16:01:13 | 显示全部楼层
hnfeng 发表于 2024-3-25 09:40
8楼的方法使用 For 命令获取 AU3的exe命令返回的值。这也是我常用的方法,简单,不用生成临时文件。

还有 ...

感谢分享,又学会了新的方法。
发表于 2024-4-10 16:46:31 | 显示全部楼层
@echo off color f3 set ip=192.168.0.101 set port=22 echo 本地命令任务:命令 echo 前 pause exit
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-27 21:09 , Processed in 0.087452 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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