Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cmd.exe执行Inno Setup-do命令而不启动批处理文件_Cmd_Inno Setup - Fatal编程技术网

使用cmd.exe执行Inno Setup-do命令而不启动批处理文件

使用cmd.exe执行Inno Setup-do命令而不启动批处理文件,cmd,inno-setup,Cmd,Inno Setup,我正在尝试使用cmd.exe从%Userdomain%和%Username%参数中获取Userdomain和Username,并将其放入文本文件中以获取数据 当我手动启动命令windows并键入以下内容时,它运行良好: echo%userdomain%\%username%>“C:\Users\MyUserName\AppData\Local\Temp\is-B7P3P.tmp\domainstring\u results.txt” 如果a将其放入批处理文件并启动.bat,它也可以正常工作 但如

我正在尝试使用cmd.exe从%Userdomain%和%Username%参数中获取Userdomain和Username,并将其放入文本文件中以获取数据

当我手动启动命令windows并键入以下内容时,它运行良好: echo%userdomain%\%username%>“C:\Users\MyUserName\AppData\Local\Temp\is-B7P3P.tmp\domainstring\u results.txt”

如果a将其放入批处理文件并启动.bat,它也可以正常工作

但如果我对Exec函数执行相同的操作,它只会启动cmd.exe,而不执行其他操作:

CommandLine := 'echo %userdomain%\%username% > "' + ExpandConstant('{tmp}') + '\domainstring_results.txt"';
Exec('cmd.exe', CommandLine, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
我不想使用批处理文件,因为我想使用安装程序的临时文件夹,所以在编译安装程序之前无法创建批处理。
也不能在[Run]部分,因为我在安装步骤之前需要此信息…

只需调用ExpandConstant(“{%WindowsContantNameHere}”)即可获取数据。 这应该允许您为您的目的使用必要的数据

[代码]
函数InitializeSetup():Boolean;
开始
MsgBox('用户名为:'+ExpandConstant('{%Username}')+#13#10+
'用户域为:'+ExpandConstant('{%Userdomain}'),MB信息,MB_OK);
结束;
使用和功能:

GetUserNameString()
GetEnv('USERDOMAIN')

回答您的问题:您缺少
/C
开关。您应该使用而不是硬编码
cmd.exe

Exec(
ExpandConstant('{cmd}'),'/C'+命令行,
'',SW_HIDE,ewwaitunterminated,ResultCode);

虽然您的方法有些过分。

我不太确定,但您不需要在命令前面加一个“/C”吗?谢谢:ExpandConstant(“{%Userdomain}\{%Username}”);做了我所期望的…所以对了,这种方法一点都不好。但我不知道在ExpandConstant()中传递windowsconstant的可能性。所以ExpandConstant(“{%Userdomain}\{%Username}”);这将是一个更轻量级的解决方案:
GetEnv('USERDOMAIN')+'\'+GetUserNameString()