我有一个从VBA调用的.bat文件,当我使用本地文件夹作为路径时它正在工作(例如C:\ Users \ cthoud01 \ Desktop \ my scripts \ scripts)。
但是,如果我使用网络目录中的路径(例如 - H:\ scripts),则会出错。我也尝试将路径替换为“”H:\ scripts \“”“但继续得到相同的错误。我想听听我们的专家是否有任何方法可以完成这项工作。
我正在使用的VBA代码:
Sub test()
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim WindowStyle As Integer: WindowStyle = 1
Dim errorCode As Long
Dim pth As String
errorCode = wsh.Run("cmd.exe /k cd """ & "H:\scripts\" & """ && DeleteMatrix.bat", WindowStyle, waitOnReturn)
If errorCode <> 0 Then
MsgBox "fail, please retry"
End
End If
End Sub
答案 0 :(得分:2)
errorCode = wsh.Run("cmd.exe /k cd /d """ & "H:\scripts\" & """ && DeleteMatrix.bat", WindowStyle, waitOnReturn)
查看额外的/d
。
在MSDos中,每个驱动器都有一个当前目录。
C:\>cd D:\dog
C:\>Copy *.* D:
会将文件复制到d:\ dog目录中。这使打字更容易。没有鼠标或菜单。
Windows只有当前目录的概念(以及每个程序的概念)。
因此,MSDos批处理文件在CMD中保持不变,您必须使用/d
告诉Windows您不希望使用CD命令执行MSDos行为。
同样,CMD模拟每个目录的默认驱动器。
这就是过程环境块中的样子
=C:=C:\Users\David Candy\Desktop\Editor\EditorSdi
=D:=d:\~MSSETUP.T