2013-07-08 71 views
0

我写了一个脚本,它所做的是将文件放入一个文件夹,然后它自动将该文件转换为制表符分隔文件。然后它创建一个名为“输出”的新文件夹。我需要做的是能够将其保存到指定位置。以下是我写的代码的副本。更改vbs脚本的输出目录

Dim saveDirBase 

set fso = CreateObject("Scripting.FileSystemObject") 
set shell = CreateObject("WScript.Shell") 
set objExcel = CreateObject("Excel.Application") 

set top = fso.GetFolder(shell.CurrentDirectory) 
saveDirBase = top & "\" & "output" 

Sub TraverseFolders(path) 
set folder = fso.GetFolder(path) 

XL2Tab(folder) 

For each item in folder.SubFolders 
If item.Path <> saveDirBase Then 
Call TraverseFolders(item.Path) 
End If 
Next 
set folder = Nothing 
End Sub 

Sub XL2Tab(folder) 
Dim saveDir 
set files = folder.Files 

If folder.Name <> top.Name Then 
saveDir = saveDirBase & "\" & folder.Name 
Else 
saveDir = saveDirBase 
End If 

If fso.FolderExists(saveDir) = False Then 
fso.CreateFolder(saveDir) 
End If 

For each file In files 
If file.Name <> Wscript.ScriptName Then 
objExcel.Application.DisplayAlerts = False 
Set objWorkbook = objExcel.Workbooks.open(folder.Path & "\" & file.Name) 
objWorkbook.SaveAs saveDir & "\" & file.Name & ".txt", -4158  
objWorkbook.close 
objExcel.Application.DisplayAlerts = True 
End If 
Next 
End Sub 

If fso.FolderExists(saveDirBase) = False Then 
fso.CreateFolder(saveDirBase) 
End If 

Call TraverseFolders(top) 
+0

假设您的意思是“输出”以外的位置?这个位置究竟是如何指定的?用户输入?配置文件?注册表键? –

回答

0

如果你的问题是如何提示输入输出文件夹的用户,要求用户输入最简单的方法将是一个InputBox

top = InputBox("Enter base folder.", WScript.ScriptName) 

这将需要一些输入验证,但是:

If IsEmpty(top) Then 
    WScript.Echo "User pressed [Cancel]." 
    WScript.Quit 1 
ElseIf top = "" Then 
    WScript.Echo "Empty path." 
    WScript.Quit 1 
ElseIf Not fso.FolderExists(top) Then 
    WScript.Echo top & " doesn't exist. Creating ..." 
    fso.CreateFolder(top) 
End If 
... 

一个更好的方式是使用Shell.BrowseForFolder方法:

Set os = CreateObject("Shell.Application") 
basedir = os.Namespace("C:\").Self.Path 
Set fldr = os.BrowseForFolder(0, "Select folder:", &h10&, basedir) 

If fldr Is Nothing Then 
    WScript.Echo "User pressed [Cancel]." 
    WScript.Quit 1 
End If 

top = fldr.Self.Path 
... 
+0

需要完成的是从一个网络共享转到另一个共享文件夹。这需要是一项自动化任务,并且还需要能够查看最新的文件。 – BigCAT41

+0

“从一个网络共享到另一个共享文件夹”是什么意思?你看“最新文件”是什么意思?请更新您的问题,并更详细地描述您希望脚本执行的操作。 –