Visual studio 带有DOS批处理文件的伏都教

Visual studio 带有DOS批处理文件的伏都教,visual-studio,installation,batch-file,Visual Studio,Installation,Batch File,我已经创建了一个简单的批处理文件,它启动了我公司的*.msi安装程序,创建了一个过程日志文件,然后在安装程序完成后显示日志文件 installAndLog.bat: msiexec.exe /i "\\FileServer2\setup.msi" /l*v "C:\setupLog.txt" "C:\setupLog.txt" 它可以工作,但有两(2)个小故障困扰着我: 黑色控制台框在后台显示安装程序运行和日志文件显示的全部时间Q1:我如何隐藏它? 及 直到不再查看日志文件(即notep

我已经创建了一个简单的
批处理文件
,它启动了我公司的*.msi安装程序,创建了一个过程日志文件,然后在安装程序完成后显示日志文件

installAndLog.bat:

msiexec.exe /i "\\FileServer2\setup.msi" /l*v "C:\setupLog.txt"
"C:\setupLog.txt"
它可以工作,但有两(2)个小故障困扰着我:

  • 黑色控制台框在后台显示安装程序运行和日志文件显示的全部时间Q1:我如何隐藏它?

  • 直到不再查看日志文件(即notepad.exe关闭),控制台框才会关闭Q2:我可以在新进程中调用文本文件并直接退出吗?

当时我是DOS爱好者,但那已经是很多年前的事了。

Q1-AFAIK你真的无法隐藏控制台窗口

Q2-使用
start
命令。这将在外壳外部启动指定的程序(记事本)。它还可以防止shell等待应用程序关闭后继续处理批处理脚本


您最好使用
start
命令更改批处理脚本以启动MSI安装程序,并让安装程序启动记事本在安装完成后查看日志文件

Q1-好吧,你真的不能隐藏控制台窗口

Q2-使用
start
命令。这将在外壳外部启动指定的程序(记事本)。它还可以防止shell等待应用程序关闭后继续处理批处理脚本


您最好使用
start
命令更改批处理脚本以启动MSI安装程序,并让安装程序启动记事本在安装完成后查看日志文件

我不认为在运行批处理文件时可以隐藏控制台窗口。但是,您可以改用vbscript,默认情况下不会创建控制台窗口

将以下内容放入扩展名为.vbs的文件中:

Dim wshShell
Set wshShell = CreateObject("WScript.Shell")

wshShell.Run "msiexec.exe /i ""\\FileServer2\setup.msi"" /l*v ""C:\setupLog.txt""", 1, true
wshShell.Run "C:\setupLog.txt"

所有的双引号都在那里,因为整个命令必须用“’包围,而将它们加倍将使它们失效。有关详细信息,请参阅文档。

我不认为在运行批处理文件时可以隐藏控制台窗口。但是,您可以改为使用vbscript,默认情况下不会创建控制台窗口

将以下内容放入扩展名为.vbs的文件中:

Dim wshShell
Set wshShell = CreateObject("WScript.Shell")

wshShell.Run "msiexec.exe /i ""\\FileServer2\setup.msi"" /l*v ""C:\setupLog.txt""", 1, true
wshShell.Run "C:\setupLog.txt"

所有的双引号都在那里,因为整个命令必须被“’包围,如果将它们加倍,则会将它们转义。有关详细信息,请参阅文档。

如果您真的想取消这些批处理窗口,您必须切换到其他窗口。一个简单的替代方案是windows脚本主机支持的脚本语言之一。
或者您可以尝试HTA(HTML应用程序)查看和。

如果您真的想摆脱这些批处理窗口,您必须切换到其他窗口。一个简单的替代方案是windows脚本主机支持的脚本语言之一。

或者您可以尝试HTA(HTML应用程序),请参见并。

以不同的用户身份按计划任务或服务运行dos脚本

按计划任务或作为服务以不同用户的身份运行dos脚本

对于第二种情况,请说
startc:\setupLog.txt
,这是该过程的背景。您还可以将著名的
@echo off
添加到文件顶部,以减少聊天。对于第一个,如果您不能安排启动批处理文件,我使用的最小解决方法是将第一个批处理文件设置为
start/min
第二个批处理文件,然后调用长操作。@Neil:听起来像是一个黑客……但是,这是一个批处理文件!:)对于第二种情况,请说
startc:\setupLog.txt
,这是该过程的背景。您还可以将著名的
@echo off
添加到文件顶部,以减少聊天。对于第一个,如果您不能安排启动批处理文件,我使用的最小解决方法是将第一个批处理文件设置为
start/min
第二个批处理文件,然后调用长操作。@Neil:听起来像是一个黑客……但是,这是一个批处理文件!:)太好了
@echo off
将阻止我的长篇大论显示在屏幕上,但如何隐藏或最小化控制台窗口?Windows shell中没有可以隐藏或最小化窗口的命令,但您可以编写一个命令。或者您可以编写一个程序,用所需的选项启动MSI,等待它完成,然后启动记事本。或者在JScript中编程这些操作。太棒了
@echo off
将阻止我的长篇大论显示在屏幕上,但如何隐藏或最小化控制台窗口?Windows shell中没有可以隐藏或最小化窗口的命令,但您可以编写一个命令。或者您可以编写一个程序,用所需的选项启动MSI,等待它完成,然后启动记事本。或者在JScript中编程这些操作。运行vbscript需要任何特殊权限吗?(我的新领域)。另外,(1,true)结尾的参数是什么?@jp2code-不需要特殊权限。1,真平均值显示应用程序并等待退出。看一下WshShell的文档链接。在答案中运行。如果这样做有效(目前不起作用),我将放弃旧的DOS脚本。希望有一个cshShell(C语言版本)。VB语言只是让我的皮肤有点蠕动。你可以写JScript而不是VBScript。前者的语法类似于C.@jp2code,它在MSDN中:。通常有VBScript和JScript的示例
CreateObject
对应于JScript中的
newActiveXObject()
;函数调用中需要括号,语句末尾需要分号。运行vbscript需要任何特殊权限吗?(我的新领域)。另外,(1,true)结尾的参数是什么?@jp2code-无特殊许可