VBS从文本文件复制文件

时间:2013-09-11 16:55:57

标签: arrays text vbscript copy

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来解决这个问题的最佳方式。

由于

1 个答案:

答案 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