如何使用WScript.Shell对象运行更多命令呢?

时间:2015-07-03 09:58:08

标签: vba batch-file cmd

我在目标中使用下面的宏来获取文件夹中所有文件的列表:

Sub SO()

Const parentFolder As String = "C:\Users\bloggsj\folder\" '// change as required, keep trailing slash

Dim results As String

results = CreateObject("WScript.Shell").Exec("CMD /C DIR """ & parentFolder & "*.*"" /S /B /A:-D").StdOut.ReadAll

Debug.Print results

Ens Sub

但它给了我无效的输出,因为它不会转换Unicode字符,这些字符是我目录中文件名的一部分。在普通的批处理文件中,我可以使用额外的命令' CHCP 1250'更改符号的编码页面。但我无法将其纳入上述宏。我曾尝试过以下几种方式:

results = CreateObject("WScript.Shell").Exec("CMD /C CHCP 1250 DIR """ & parentFolder & "*.*"" /S /B /A:-D").StdOut.ReadAll

results = CreateObject("WScript.Shell").Exec("CMD /C ""CHCP 1250"" ""DIR """ & parentFolder & "*.*"" /S /B /A:-D""").StdOut.ReadAll

1 个答案:

答案 0 :(得分:1)

<强>&符号

  

command1&amp; command2:用于在一个命令上分隔多个命令   线。 Cmd.exe运行第一个命令,然后运行第二个命令。

CMD /C CHCP 1250 & DIR ....

然而,VBA的目录列表为native support,而VBScript可以使用FileSystemObject来实现相同目的。