Command line 如何在没有命令提示窗口的情况下创建文件

Command line 如何在没有命令提示窗口的情况下创建文件,command-line,command-prompt,cmd,wsh,Command Line,Command Prompt,Cmd,Wsh,我正在使用WinRAR SFX模块创建一个安装,并使用其预设选项运行一些初步测试 由于wscript只能接受vbs文件,而不能接受脚本本身,因此我首先运行“cmd/c echo{…script code…}>setup.vbs”,然后运行“wscript setup.vbs”。运行第一个cmd命令会打开一个简短的命令窗口,我真的希望避免这种情况。我曾想过使用RunDll32来编写这些数据,但找不到任何合适的API来使用 有人能想出一种方法绕过它,在不打开命令提示窗口的情况下创建一个包含小VBSc

我正在使用WinRAR SFX模块创建一个安装,并使用其预设选项运行一些初步测试

由于wscript只能接受vbs文件,而不能接受脚本本身,因此我首先运行“cmd/c echo{…script code…}>setup.vbs”,然后运行“wscript setup.vbs”。运行第一个cmd命令会打开一个简短的命令窗口,我真的希望避免这种情况。我曾想过使用RunDll32来编写这些数据,但找不到任何合适的API来使用

有人能想出一种方法绕过它,在不打开命令提示窗口的情况下创建一个包含小VBScript文本的小文件吗

非常感谢


splintor

脚本代码是否已存在于文件中?如果是,

可以使用TYPE命令将脚本发送到文件:

TYPE [script_file] > setup.vbs
或复制脚本文件:

COPY [script_file] setup.vbs
如果脚本代码在
cmd
的主体中,则可以使用
START
命令在没有窗口(
/b
标志)的情况下运行
cmd


与其使用
cmd/c echo{…script code…}>setup.vbs
作为预设步骤,也许您可以在安装时打包一个VBscript,用于进行初步测试并创建
setup.vbs
,然后为您调用
setup.vbs
。您必须将其放入WinRAR脚本的设置部分

您可以从VBScript调用另一个VBScript,如下所示:

Set WSHShell = CreateObject("WScript.Shell") 
WSHShell.Run "wscript d:\setup.vbs, ,True

有关Run命令的语法,请参阅。

type、copy和start都是cmd的内部命令,因此cmd必须首先运行,这意味着将显示一个命令提示窗口:(如何第一次运行“cmd/c echo{…script code…}>setup.vbs”?从您的标记来看,这似乎是从命令行或批处理脚本执行的。WinRAR允许您指定提取之前要运行的命令。WinRAR正在运行它,可能使用ShellExecute或类似的工具,但我无法真正控制它。如果您说“cmd/c echo{…script code…}>setup.vbs”在某些WinRAR脚本或对话框中,您应该能够说“START/B cmd/c echo{…script code…}>setup.vbs”。这样做有效吗(对不起,我自己没有WinRAR来尝试)。我们不确切地说“cmd/c echo…”-我们说的是“%windir%\system32\cmd.exe/c echo…”。我猜WinRAR使用的是类似ShellExecute的东西。感谢Patrick的额外尝试。但是,我使用presetup是因为提取可能需要很长时间,如果不满足先决条件,我希望我的测试在提取开始之前停止提取。wscript.exe没有类似于“cmd/c”的选项,这真是太遗憾了。
Set WSHShell = CreateObject("WScript.Shell") 
WSHShell.Run "wscript d:\setup.vbs, ,True