Скопируйте файл из одной папки в другую, сопоставив строку в имени файла, и переименуйте скопированный файл, добавив дату и время к имени файла. - PullRequest
0 голосов
/ 07 июля 2019

Мне нужно скопировать файл журнала сервера в другую папку после завершения одного файла журнала, а затем переименовать скопированный файл, добавив дату и время в имя файла.

Источник: C: \ Server \ Logs

Пункт назначения: Может быть выбран пользователем с помощью .BrowseForFolder

Имя файла журнала: Server_log_23.txt («23» - это номер журнала, который изменится с 1 на 30)

Один файл журнала будет завершен через 2 минуты, и запись журнала будет перемещена в следующий файл путем добавления одного (это означает, что если Server_log_23.txt завершено, то сервер начнет записывать журналы в Server_logs_24.txt до Server_log_30.txt, если log_30 будет завершено, то начнется запись в log_1)

1 Ответ

0 голосов
/ 11 июля 2019

Я получил такой код, но он не дает непрерывного цикла

 Const DestinationFile = "C:\Users\Testbench\Desktop\file copy\Destination\"

 Const src = "C:\Users\Testbench\Desktop\file copy\Source\"

 strInput = UserInput( "Please enter file number:" )

 strInput1 = "log_(" &strInput1 &")"

 Dim sDateTimeStamp

 Dim folder

 Sub CopyFile()`enter code here`
    Set fso = CreateObject("Scripting.FileSystemObject")
     srcfile = strInput
     Set folder = fso.GetFolder(src)
     For Each file In folder.files 
     If instr(file.name, strInput) > 0 Then
        srcfile=file.name
        WScript.Echo srcfile
     End If 
 Next
SourceFile= "C:\Users\Testbench\Desktop\file copy\Source\" & srcfile
WScript.Echo SourceFile

sDateTimeStamp = cStr(Year(now())) & _
             Pad(cStr(Month(now())),2) & _
             Pad(cStr(Day(now())),2) & _
             Pad(cStr(Hour(now())),2) & _
             Pad(cStr(Minute(now())),2) & _
             Pad(cStr(Second(now())),2)


WScript.Echo "Copying " & SourceFile & " to " & DestinationFile
fso.CopyFile SourceFile, DestinationFile & srcfile & "_" & sDateTimeStamp & ".txt", True

Set fso = Nothing
End Sub

Function Pad(CStr2Pad, ReqStrLen)
    Dim Num2Pad
    Pad = CStr2Pad
    If len(CStr2Pad) < ReqStrLen Then
        Num2Pad = String((ReqStrlen - Len(CStr2Pad)), "0")
        Pad = Num2Pad & CStr2Pad
    End If
End Function

Function UserInput( myPrompt )
    If UCase( Right( WScript.FullName, 12 ) ) = "\CSCRIPT.EXE" Then
        WScript.StdOut.Write myPrompt & " "
        UserInput = WScript.StdIn.ReadLine
    Else
        UserInput = InputBox( myPrompt )
    End If
End Function

Do while strInput1<30
   wscript.sleep 180
   CopyFile()
   strInput1 = strInput1 + 1
Exit Do
   strInput1 =1
   CopyFile()
   strInput1 = strInput1 + 1
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...