【问题标题】:How to create a file without a Command Prompt window如何在没有命令提示符窗口的情况下创建文件
【发布时间】:2008-12-16 12:22:26
【问题描述】:

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

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

谁能想到一种绕过它的方法,并在不打开命令提示符窗口的情况下创建一个带有小 VBScript 文本的小文件?

非常感谢,

碎片

【问题讨论】:

    标签: command-line command-prompt cmd wsh


    【解决方案1】:

    脚本代码是否已经在文件中?如果是这样,

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

    TYPE [script_file] > setup.vbs
    

    或复制脚本文件:

    COPY [script_file] setup.vbs
    

    如果脚本代码在您的cmd 的正文中,您可以使用START 命令在没有窗口的情况下运行cmd/b 标志):

    START /B cmd /c echo {...script code...} > setup.vbs
    

    【讨论】:

    • type、copy和start都是cmd的内部命令,所以cmd必须先运行,也就是说会显示一个命令提示符窗口:(
    • 你是如何第一次运行“cmd /c echo {...script code...} > setup.vbs”的?从您的标签看来,您是从命令行或批处理脚本执行此操作的。
    • WinRAR 允许您指定要在提取之前运行的命令。 WinRAR 正在运行它,可能使用 ShellExecute 或类似的东西,但我无法真正控制它。
    • 如果您在某些 WinRAR 脚本或对话框中说“cmd /c echo {...script code...} > setup.vbs”,您应该可以说“START /B cmd / c echo {...脚本代码...} > setup.vbs"。这行得通吗(对不起,我自己没有 WinRAR 来尝试这个)。
    • 我们并不是说“cmd /c echo...”——我们说的是“%windir%\system32\cmd.exe /c echo...”。我猜 WinRAR 正在使用类似 ShellExecute 的东西。
    【解决方案2】:

    与其使用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
    

    请参阅this MSDN link 了解 Run 命令的语法。

    【讨论】:

    • 感谢帕特里克的额外尝试。但是,我正在使用预设,因为提取可能需要很长时间,如果不满足先决条件,我希望我的测试在提取开始之前停止提取。真可惜 wscript.exe 没有类似于“cmd /c”的选项。
    猜你喜欢
    • 2023-02-11
    • 2012-03-19
    • 2012-09-11
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多