Vbscript 运行start..run..wscript a.vbs a.bat时出现问题

Vbscript 运行start..run..wscript a.vbs a.bat时出现问题,vbscript,windows-xp,batch-file,command-prompt,Vbscript,Windows Xp,Batch File,Command Prompt,我有两个文件a.vbs和a.bat,每个文件只有一行 a、 vbs a、 球棒 当它工作时,它会在后台安静地运行一个.bat,它会复制文件 我可以开始…运行…a.vbs a.bat 这很有效。 我可以打开命令提示符并执行wscript a.vbs a.bat 但不起作用的是 开始…运行…wscript a.vbs a.bat 如果我将msgbox放在a.vbs中,很明显它会运行。 但使用该方法时,a.bat似乎不会运行 为什么该表单不起作用?当WScript.Arguments(0)不是完整路径

我有两个文件a.vbs和a.bat,每个文件只有一行

a、 vbs

a、 球棒

当它工作时,它会在后台安静地运行一个.bat,它会复制文件

我可以开始…运行…a.vbs a.bat 这很有效。 我可以打开命令提示符并执行wscript a.vbs a.bat

但不起作用的是

开始…运行…wscript a.vbs a.bat

如果我将msgbox放在a.vbs中,很明显它会运行。 但使用该方法时,a.bat似乎不会运行

为什么该表单不起作用?

当WScript.Arguments(0)不是完整路径时,a.bat需要位于当前目录中

您可以通过以下方式检查当前目录:

WScript.Echo WScript.CreateObject("WScript.Shell").CurrentDirectory
如果.bat始终与a.vbs位于同一文件夹中,则可以使用完整路径:

set fso=WScript.CreateObject("Scripting.FileSystemObject")
thepath=fso.BuildPath(fso.GetParentFolderName(WScript.ScriptFullName),"a.bat")
WScript.Echo thepath
如果WScript.Arguments(0)不是完整路径,则.bat需要位于当前目录中

您可以通过以下方式检查当前目录:

WScript.Echo WScript.CreateObject("WScript.Shell").CurrentDirectory
如果.bat始终与a.vbs位于同一文件夹中,则可以使用完整路径:

set fso=WScript.CreateObject("Scripting.FileSystemObject")
thepath=fso.BuildPath(fso.GetParentFolderName(WScript.ScriptFullName),"a.bat")
WScript.Echo thepath

为什么使用vbscript只调用.bat<代码>开始-->运行-->a.bat


如果必须这样做,请执行
Start-->运行-->cscript a.vbs a.bat

为什么要使用vbscript来调用.bat<代码>开始-->运行-->a.bat


如果必须这样做,请执行
开始-->运行-->cscript a.vbs a.bat

只是想知道,为什么要使用批处理文件,而不只是从VBScript脚本调用?(或者这只是一个虚构的例子?)一个虚构的或示范性的例子。。所以不必是批处理文件中的副本,也可以是其他命令。但是问为什么这个方法不起作用,我想最好是用vbscript写下批处理中的任何内容。。但我仍然对这个问题感到好奇。只是想知道,为什么要使用批处理文件而不是简单地从VBScript调用?(或者这只是一个虚构的例子?)一个虚构的或示范性的例子。。所以不必是批处理文件中的副本,也可以是其他命令。但是问为什么这个方法不起作用,我想最好是用vbscript写下批处理中的任何内容。。但是我仍然对这个问题感到好奇。嗯,我想你的一般观点已经触及了一般问题。。确保我在任何地方都使用绝对路径。wscript c:\blah\inv.vbs c:\blah\a.bat和bat中带有copy命令的绝对路径。。非常平凡。。不过,如果我发现了什么,我会尽量把事情进一步孤立起来,再加上一句。。我不得不在某一点上重命名这些文件。我试着把它们改成绝对路径,现在似乎奏效了。。当我改变了很多路径后,它仍然有效。。wscript c:\blah\inv.vbs a.bat(正如您所说,a.bat位于同一个目录中-我实际上就是这样)和a.bat在文件副本中不需要绝对路径。我不知道到底出了什么问题。为什么wscript使用它不起作用,但不使用它却起作用。但是,问题出在你所说的区域。。我还看到了您提供的代码如何帮助您了解发生了什么。我看到,当不指定vbs文件的路径时,然后使用wscript执行该操作,它将在路径中找到任何vbs文件,而使用wscript它只在%userprofile%中查找。但这并不是行为的原因,因为vbs文件所在的目录不在path中。嗯,我认为您的一般观点已经解决了一般问题。。确保我在任何地方都使用绝对路径。wscript c:\blah\inv.vbs c:\blah\a.bat和bat中带有copy命令的绝对路径。。非常平凡。。不过,如果我发现了什么,我会尽量把事情进一步孤立起来,再加上一句。。我不得不在某一点上重命名这些文件。我试着把它们改成绝对路径,现在似乎奏效了。。当我改变了很多路径后,它仍然有效。。wscript c:\blah\inv.vbs a.bat(正如您所说,a.bat位于同一个目录中-我实际上就是这样)和a.bat在文件副本中不需要绝对路径。我不知道到底出了什么问题。为什么wscript使用它不起作用,但不使用它却起作用。但是,问题出在你所说的区域。。我还看到了您提供的代码如何帮助您了解发生了什么。我看到,当不指定vbs文件的路径时,然后使用wscript执行该操作,它将在路径中找到任何vbs文件,而使用wscript它只在%userprofile%中查找。但这不是行为的原因,因为vbs文件位于路径中不存在的目录中。该方法在vbs文件中执行该操作,在后台运行bat或任何命令,而不打开命令窗口。事实上,我的问题提到了这一点。这种方法在vbs文件中执行,在后台运行bat或任何命令,而不打开命令窗口。事实上,我的问题提到了这一点。