0

AフォルダーからBフォルダーにファイルをコピーするスクリプトを作成しようとしています。リストファイルからのファイルのみがコピーされます。

次に、コピーに失敗したファイルをログに記録するために必要です。これが私がこれまでに持っているものです、私はただロギングを機能させることができません。

    Option Explicit

Dim Sour, Dest
Dim oFSO, sFile, oFile, sText
Dim objFSO, objFileCopy
Dim strFilePath, strDestination, strSource
Const ForReading = 1, ForWriting = 2, ForAppending = 8

strLoggingFiles = "C:\failedtransfer.txt"

strSource = InputBox("Enter source path information") 'Enter your source path here
strDestination = InputBox("Enter destination path information") 'Enter your destination path here

'Set the read of the input file and prompt for location
Set oFSO = CreateObject("Scripting.FileSystemObject")
sFile = InputBox("Enter path to text document with files to be copied:")

'Open the read, get the file name of the file to be copied, and copy it to new location
If oFSO.FileExists(sFile) Then
   Set oFile = oFSO.OpenTextFile(sFile, ForReading)
   Do While Not oFile.AtEndOfStream
      sText = oFile.ReadLine
      If (Trim(sText) <> "") And _
         oFSO.FileExists(strSource & "\" & sText) Then

         oFSO.CopyFile strSource & "\" & sText, strDestination
      Else
         WScript.Echo "Couldn't find " & strSource & "\" & sText
      End If
   Loop
   oFile.Close
Else
   WScript.Echo "The file was not there."
End If
4

2 に答える 2

0

ある時点で、ロギングルーチンを何度も作成することに飽きてしまったので、さまざまな機能(コンソール、イベントログ、ファイル)にロギングするための抽象化レイヤーとしてクラス(CLogger)を作成しました。

Set clog = New CLogger
clog.LogFile = "C:\failedtransfer.txt"
clog.LogToConsole  = False
clog.LogToEventlog = False

'...

On Error Resume Next
oFSO.CopyFile strSource & "\" & sText, strDestination
If Err Then
  clog.LogError strSource & "\" & sText & ": " & FormatErrorMessage(Err)
End If
On Error Goto 0

'...
于 2012-09-27T10:23:51.817 に答える
0

これがコードです。ソース ファイル名 (フル パス) が見つからないか、コピー時に失敗した場合は、それらをログに記録します。Vista/Win7+ でルート ディレクトリにファイルを配置するには、管理者権限が必要になることに注意してください。

Option Explicit

Dim Sour, Dest
Dim oFSO, oLog, sFile, oFile, sText
Dim objFSO, objFileCopy
Dim strFilePath, strDestination, strSource
Const ForReading = 1, ForWriting = 2, ForAppending = 8

strLoggingFiles = "C:\failedtransfer.txt"

strSource = InputBox("Enter source path information") 'Enter your source path here
strDestination = InputBox("Enter destination path information") 'Enter your destination path here

'Set the read of the input file and prompt for location
Set oFSO = CreateObject("Scripting.FileSystemObject")
sFile = InputBox("Enter path to text document with files to be copied:")

'Open the read, get the file name of the file to be copied, and copy it to new location
If oFSO.FileExists(sFile) Then
   'Open/create log file
   set oLog = oFSO.OpenTextFile(strLoggingFiles, ForAppending, True)

   Set oFile = oFSO.OpenTextFile(sFile, ForReading)
   Do While Not oFile.AtEndOfStream
      sText = oFile.ReadLine
      If (Trim(sText) <> "") And _
         oFSO.FileExists(strSource & "\" & sText) Then

         On Error Resume Next 'disable quit on error
         oFSO.CopyFile strSource & "\" & sText, strDestination
         If Err.Number <> 0 Then
             oLog.WriteLine strSource & "\" & sText 'log failed copy
         End If
         On Error Goto 0 'enable quit on error
      Else
         WScript.Echo "Couldn't find " & strSource & "\" & sText
         oLog.WriteLine strSource & "\" & sText 'log failed copy 'log missing source
      End If
   Loop
   oFile.Close
   oLog.Close 'close log file
Else
   WScript.Echo "The file was not there."
End If
于 2012-09-26T22:44:25.520 に答える