在我的程序中,我想执行以下命令:
RetVal = Shell("dir > temp", 1)
当我这样做时,出现以下错误:
运行时错误“ 53”:找不到文件。
仅仅做Shell("dir", 1)
也会给我同样的错误。但是,如果我做Shell("help", 1)
,它就可以工作。
dir > temp
命令在命令窗口中可以正常工作。我尝试通过以下命令使用Shell:dir
,cd
,ver
,time
,date
,help
。其中唯一有效的方法是help
。
我希望在执行Shell("dir > temp", 1)
时会得到一个目录列表,表明我可以使用temp进行其他操作。而是显示“找不到文件”。
答案 0 :(得分:2)
并非所有传递给Shell
函数的命令都将像在“命令提示符”窗口中一样起作用。 Shell
函数旨在运行可执行文件,而不执行命令:
运行可执行程序并返回一个Variant(Double)表示 程序的任务ID(如果成功);否则,它将返回零。
像Windows中的“运行”实用程序那样思考它。
您应该做的是先调用“ cmd.exe”,然后将所需的任何参数/命令传递给它。尝试这样的事情:
Dim myCommand As String
myCommand = "dir"
Shell "cmd.exe /S /K" & myCommand, vbNormalFocus
如果要在执行命令后关闭命令提示符窗口,则可以将参数/K
替换为/C
。在这种情况下,您可能还想使用vbHide
而不是vbNormalFocus
:
myCommand = "dir > temp"
Shell "cmd.exe /S /C" & myCommand, vbHide