Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
在Delphi 2010应用程序中运行cmd脚本,但不将其作为批处理文件写入磁盘_Delphi_Batch File_Delphi 2010 - Fatal编程技术网

在Delphi 2010应用程序中运行cmd脚本,但不将其作为批处理文件写入磁盘

在Delphi 2010应用程序中运行cmd脚本,但不将其作为批处理文件写入磁盘,delphi,batch-file,delphi-2010,Delphi,Batch File,Delphi 2010,有没有一种方法可以运行复杂的命令脚本(批处理文件),而不将其写入磁盘 我想在备忘录中键入我的脚本,然后按下按钮执行脚本,而不首先将其写入磁盘。这是我测试的解决方案,它可以工作。 谢谢你的回答 var: script_lines:string; script_lines:='hostname & getmac & ipconfig /all & tasklist'; ShellExecute(Handle, 'open', PChar('cmd.exe'), PChar

有没有一种方法可以运行复杂的命令脚本(批处理文件),而不将其写入磁盘


我想在备忘录中键入我的脚本,然后按下按钮执行脚本,而不首先将其写入磁盘。

这是我测试的解决方案,它可以工作。 谢谢你的回答

var: script_lines:string;

script_lines:='hostname & getmac & ipconfig /all & tasklist';

ShellExecute(Handle, 'open', PChar('cmd.exe'), PChar('/k '+script_lines), nil, SW_SHOW);

不,没有。CMD.EXE希望解析文本文件以获取命令,或从命令行接收命令。如果你正在做一些需要脚本的事情,它必须在一个文件中。这取决于脚本的实际功能。正如您所说,命令可以作为命令行参数传递给CMD.EXE,所以您可以在命令后面加上
/C
参数来输出CMD.EXE。这意味着为每个命令启动一个新的CMD.EXE进程。您可以使用“&&”操作符将多个命令链接在一个shell out中。但接下来,您需要分析脚本,以了解什么是安全的,什么是可链接的,等等。最好切换到
IActiveScript
,这样您就可以在内存中运行VBScript/JavaScript代码,而不是运行CMD.EXE。