Hiya Guys我有一个文件位置的文本文件我正在寻找一种方法来读取文本文件,然后将这些位置用作源位置并将文件复制到一个单独的目的地。
我一直在玩,已经看过动态数组,但似乎无法理解如何将数组的内容放入变量中作为源位置读取。
到目前为止我所做的例子
Dim TxtFile
dim strDestinationFolder
strDestinationFolder = "\\SERVER\DESTLOGS"
TxtFile = "c:\windows\temp\SOFTWARELOG.txt"
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
Dim f: Set f = fso.OpenTextFile(TxtFile)
Do Until f.AtEndOfStream
WScript.Echo "PSTLocation: " & f.ReadLine ; I can read each line here in the txt file
fso.CopyFile strDestinationFolder, f.REadline
Loop
我也试过玩,但不知道从哪里开始虽然它看起来最可靠?
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
(TxtFile, ForReading)
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
arrServiceList = Split(strNextLine , ",")
WScript.Echo "Server: " & arrServiceList(0)
WScript.Echo "Service: " & objTextFile
For k = 1 to UBound(arrServiceList)
WScript.Echo vbTab & "Service: " & arrServiceList(i)
Next
Loop
任何指导请问我应该用vbs来解决这个问题的最佳方式。
由于
答案 0 :(得分:3)
WScript.Echo "PSTLocation: " & f.ReadLine
fso.CopyFile strDestinationFolder, f.REadline
您的代码回应从文件读取的一行,然后尝试将目标文件夹复制到从文件中读取的 next 行。
如果您想从文件中读取一行而不是一件事,则需要将读取行分配给变量,然后使用该变量。此外,您需要切换CopyFile
方法的参数。来源首先是目的地。另外,如果您希望目标位于文件夹中,则需要使用尾随反斜杠(否则您将尝试使用文件覆盖文件夹,从而引发错误)。
Do Until f.AtEndOfStream
line = Trim(f.ReadLine)
WScript.Echo "PSTLocation: " & line
If fso.FileExists(line) Then fso.CopyFile line, strDestinationFolder & "\"
Loop
Trim()
说明了读取行中的虚假前导/尾随空格,在尝试对其执行任何操作之前,最好先检查文件是否存在。
编辑:要检测现有目标文件并在文件名后附加正在运行的号码,请尝试以下操作:
basename = fso.GetBaseName(line)
extension = fso.GetExtensionName(line)
destinationFile = fso.BuildPath(strDestinationFolder, basename & "." & extension)
i = 1
Do While fso.FileExists(destinationFile)
filename = basename & i & "." & extension
destinationFile = fso.BuildPath(strDestinationFolder, filename)
i = i + 1
Loop
fso.CopyFile line, destinationFile