我使用了Extract all .gz file in folder using VBA Shell command的代码来提取.gz files.The问题,如果文件路径中有一个空白,代码就不能工作,如果没有空白,它就会工作,如下所示:在第一个示例中,没有'_‘而是一个空白,在'K’和'L‘之间没有'_',因此文件路径有空白,而运行的示例是’_ ',而整个文件路径没有空白。
'Example that doesn't work:
Sub extractAllFiles()
Dim MyObj As Object, MySource As Object, File As Variant
Dim shellStr As String
File = Dir("Z:\A_B_C\D_E_F\G_H_I\J_K L\_M_N_O\P_Q_R\*.gz")
While (File <> "")
If InStr(1, File, ".gz") > 0 Then
shellStr = "C:\Program Files\WinZip\winzip32 -e Z:\A_B_C\D_E_F\G_H_I\J_K L\_M_N_O\P_Q_R\" & File & " Z:\A_B_C\D_E_F\G_H_I\J_K L\_M_N_O\P_Q_R\"
Call Shell(shellStr, vbHide)
End If
File = Dir
Wend
End Sub
'Example that works:
Sub extractAllFiles()
Dim MyObj As Object, MySource As Object, File As Variant
Dim shellStr As String
File = Dir("Z:\A_B_C\D_E_F\G_H_I\J_K_L\_M_N_O\P_Q_R\*.gz")
While (File <> "")
If InStr(1, File, ".gz") > 0 Then
shellStr = "C:\Program Files\WinZip\winzip32 -e Z:\A_B_C\D_E_F\G_H_I\J_K_L\_M_N_O\P_Q_R\" & File & " Z:\A_B_C\D_E_F\G_H_I\J_K_L\_M_N_O\P_Q_R\"
Call Shell(shellStr, vbHide)
End If
File = Dir
Wend
End Sub我想要第一个例子起作用,但为什么不行呢?
没有错误。代码运行,打开winzip,但它是空的,没有文件是解压缩的!非常感谢。
发布于 2013-12-27 16:45:52
尝试在shell字符串中的路径周围放置引号:
shellStr = "C:\Program Files\WinZip\winzip32 -e ""Z:\A_B_C\D_E_F\G_H_I\J_K L\_M_N_O\P_Q_R\" & File & """ ""Z:\A_B_C\D_E_F\G_H_I\J_K L\_M_N_O\P_Q_R\"""如果您还不知道,两个双引号("")的计算结果是字符串中的一个双引号。与C等语言相比,反斜杠将用于转义引号(\")。
https://stackoverflow.com/questions/20804058
复制相似问题