[已解决] 程序在CMD执行时如何SET变量
本帖最后由 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
示例代码发上来...
Hello, 有发示例代码,编译后在CMD中执行,会返回 DateTest=YYYYMMDD。我想实现 CMD命令 SET 的效果
让变量 %DateTest%的值等于示例中 $DATE 的值。
E:\>test.exe
SET DateTest=20240322
E:\>echo %DateTest%
%DateTest%--没有给变量赋值 yhxhappy 发表于 2024-3-22 16:48
Hello, 有发示例代码,编译后在CMD中执行,会返回 DateTest=YYYYMMDD。我想实现 CMD命令 SET 的效果
让变 ...
用CMD调用AU3变量?
为毛不用AU3执行CMD命令? 邪恶海盗 发表于 2024-3-22 17:02
用CMD调用AU3变量?
为毛不用AU3执行CMD命令?
因为工具只是整个批处理中的一小部分,实现单一的功能,功能是读取一些信息转为CMD变量。
比如读取本机LAN MAC,转为CMD变量 %LANMAC% 供后续的 BAT 调用。 附议海盗,感觉Au3操作批处理更简单,反向操作可能会有麻烦。
通常使用环境变量、注册表、文件中介等。 将整个批处理都用AU3重写是可以的,但我这里情况是:批处理是其他人在用的,在某个节点读取某个信息遇到了困难,让我用AU3来实现这一部分功能。
现在AU3已经写好,能将读取到的信息输出到CMD控制台。
在批处理中也可以读取回显信息,截取想要的字符设置变量。
只是我想看下有没有更好的办法,通过AU3直接将“值”赋值给 CMD 中的变量。
看到过其他人写的程序,读取到了一排信息,十几行,全部实际的转换为 CMD 变量。
后面的批处理在调用时不需要再处理,直接使用 %xxx% 这种格式变量。
zghwelcome 发表于 2024-3-23 15:18
感谢!
通过批处理的配合,达到了我想要的效果。 本帖最后由 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
hnfeng 发表于 2024-3-25 09:40
8楼的方法使用 For 命令获取 AU3的exe命令返回的值。这也是我常用的方法,简单,不用生成临时文件。
还有 ...
感谢分享,又学会了新的方法。 @echo off color f3 set ip=192.168.0.101 set port=22 echo 本地命令任务:命令 echo 前 pause exit
页:
[1]