如何在WScript.Shell命令中使用变量?

时间:2019-07-01 19:09:33

标签: excel vba

在Excel VBA的WScript.Shell命令中使用变量。该命令旨在将多个tsv文件合并为1。

很难对路径进行编码,但是我正在努力使用变量将其合并

Sub Combine()
    Dim wsh As Object
    Set wsh = VBA.CreateObject("WScript.Shell")
    Dim waitOnReturn As Boolean: waitOnReturn = True
    Dim windowStyle As Integer: windowStyle = 1
    wsh.Run "cmd /c type C:\Path\SubDir\*.tsv > C:\Path\SubDir\All.txt", windowStyle, waitOnReturn
End Sub

尝试使用变量:

Dim FileName As String
Dim cmd_01 As String
FileName = SubDir
cmd_01 = "type C:\Path\" & FileName & "\*.tsv > C:\Path\" & FileName & "\All.txt"
wsh.Run "cmd /c & cmd_01 & """, windowStyle, waitOnReturn

我希望最终得到一个名为All.txt的文件,当我对整个命令进行硬编码时,该文件可以工作,但是我想使用一个变量,因为我有几个要迭代的目录。我尝试了上述几种变体,但都无济于事-似乎可以快速打开命令窗口,但实际上无法运行命令来组合文件。

1 个答案:

答案 0 :(得分:0)

您在一行中放入了太多“

wsh.Run "cmd /c & cmd_01 & """, windowStyle, waitOnReturn

如果您想要这样做,可以通过调试检查字符串,或者只进行debug。那样打印一行

cmd_01 = "type C:\Path\" & FileName & "\*.tsv > C:\Path\" & FileName & "\All.txt"
debug.print  "cmd /c " & cmd_01 & """
debug.print  "cmd /c " & cmd_01 
wsh.Run "cmd /c " & cmd_01 , windowStyle, waitOnReturn