WshShell.run和Windows 7中的主要问题

时间:2012-08-21 03:44:34

标签: batch-file vbscript batch-processing

这是我想改进的VBScript。我想要四件事:

1)添加一行,将扩展名cleanup.dll重命名为cleanup.exe,因为它可以被WshShell.run调用并执行(隐藏)。

2)下面写的方式,脚本打开两个屏幕:cleanup.exe的屏幕和一个空白屏幕,应该为用户隐藏,而不是发生了什么!如何隐藏第二个屏幕?我想以隐形方式运行它(用户无法关闭或操作第二个屏幕。它将通过cleanup.exe中的代码关闭。)注意:下面的代码在Windows XP中完美运行,但在Windows 7上运行不正常如何使它在所有Windows平台上都能运行?

VBSCRIPT“Second.vbs”

Set WshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject") 
objFSO.MoveFile "cleanup.dll" , "cleanup.exe" 
WshShell.Run "c:\cleanup.exe", 0, TRUE
Set WshShell = Nothing

BATCH“Master.bat”

@echo off
wscript Second.vbs
exit /b

3)是否有可靠的软件从VBS转换为EXE?

4)我遇到的另一个问题是下面的命令行没有产生结果。我是否只使用下面代码的第二个问题?为什么??

假设我的批处理文件位于驱动器f:\

如果我双击它,我的屏幕应该填充从TXT文件中提取的信息,该文件实际上位于驱动器c:\

@echo off
set DRV=C:\August\MyProgram
cd\
cd %DRV%
type test.txt & pause>nul


@echo off
set DRV=C:\August\MyProgram
cd\

c:

cd %DRV%
type test.txt & pause>nul

提前感谢您的解释和解决方案

1 个答案:

答案 0 :(得分:1)

为什么使用批处理运行,vbscript更强大,并提供更多控制。

关于可见的控制台窗口 WshShell.Run "c:\cleanup.exe", 0, TRUE应该在运行时隐藏控制台并在继续之前等待 确保使用wscript.exe而不是cscript.exe启动脚本,并且不要使用任何wscript.echo

重命名文件

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "cleanup.dll" , "cleanup.exe"

关于批处理cd,在控制台窗口中练习 cd永远不会更改到驱动器,只会更改到另一个地图,驱动器:更改活动驱动器

d: => d:\>
c: => c:\> (so now if you are on c:\)
cd d:\test =>c:\ (changes your active map on d: to d:\test but since your c: drive is still the active drive you see nothing happening)
d: => d:\test (change drive to d:, you do see that the active map on drive d: is d:\test (at least with the default prompt)