Показать полную графическую версию : [решено] Бекап
Alexander_88
14-09-2018, 16:24
Здравствуйте, подскажите, хотел сделать бекап файла... файл один.
Как можно скопировать файл в определенную папку, указав имя на новой копии в виде имени файл, плюс добавить к имени дату и время?
Этот файл я добавлю в диспетчер заданий виндовс и будут делаться резервные копии :)
Alexander_88, ничего не понятно.
Вам что-то Option Explicit
Dim strSourceFile
Dim strDestFolder
Dim objFSO
Dim dtNow
Dim strNewFileName
If WScript.Arguments.Count = 2 Then
strSourceFile = WScript.Arguments.Item(0)
strDestFolder = WScript.Arguments.Item(1)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strSourceFile) Then
If objFSO.FolderExists(strDestFolder) Then
dtNow = Now()
strNewFileName = _
objFSO.GetBaseName(strSourceFile) & _
"_" & _
Right("0000" & CStr(Year(dtNow)), 4) & _
Right("00" & CStr(Month(dtNow)), 2) & _
Right("00" & CStr(Day(dtNow)), 2) & _
"_" & _
Right("00" & CStr(Hour(dtNow)), 2) & _
Right("00" & CStr(Minute(dtNow)), 2) & _
Right("00" & CStr(Second(dtNow)), 2) & _
"." & _
objFSO.GetExtensionName(strSourceFile)
objFSO.CopyFile strSourceFile, objFSO.BuildPath(strDestFolder, strNewFileName), True
Else
WScript.Echo "Can't find destination folder [" & strDestFolder & "]."
WScript.Quit 3
End If
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 2
End If
Set objFSO = Nothing
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file> <Destination folder>"
WScript.Quit 1
End If
WScript.Quit 0
https://i.imgur.com/KhjXfpt.pngнужно?
ничего не понятно. »
что-то такое»
Дык, почему непонятно? Именно это и описано в условии...
Alexander_88, ещё вариант на powershell
$file = gi 'N:\Путь к файлу\файл.ext'
$dst = 'M:\Путь к определенной папке\Определенная папка\'
copy $file.fullname ($dst + $file.basename + ('_{0:yyyy-MM-dd_HH-mm}' -f (get-date)) + $file.extension)
Alexander_88
14-09-2018, 18:52
Спасибо за ответы. Нужна просто функция копирования файла, и чтобы к имени добавлялась дата и время. (к имени копии, а не оригинала)
Еще, чтобы это все происходило не заметно для глаз пользователя (чтобы черные, синие окна не мелькали, никаких сообщений не выскакивало). Я поэтому и хотел vbs файлик.. когда он выполняется, никаких окон черных как в BAT не мелькает.
чтобы это все происходило не заметно для глаз пользователя (чтобы черные, синие окна не мелькали »
Alexander_88, тогда используйте wscript.exe вместо cscript.exe.
никаких сообщений не выскакивало) »
Добавьте параметр //b:
//B Пакетный режим: подавляются отображение ошибок и запросов сценария
Alexander_88
14-09-2018, 21:01
А я ничего не перепутал? Пути к файлам в этой строке вводить?
WScript.Echo "Usage: wscript.exe //nologo C:\Users\Alexander\OneDrive\work\new\1.vbs C:\Users\Alexander\OneDrive\work\new\1.bat C:\Users\Alexander\OneDrive\work\new\1"
WScript.Quit 1
Что то не получается, после запуска появляется сообщение от "Windows Script Host", нажимаю ОК, и все.. копии нету
megaloman
14-09-2018, 21:32
Alexander_88, FileIn = "Z:\Box_In\rfpro180408.xlsm"
DirOut = "Z:\Box_Out"
Set WArg = WScript.Arguments
If WArg.Count = 2 Then
FileIn = WArg.Item(0)
DirOut = WArg.Item(1)
End If
On Error Resume Next
Set File = GetObject("winMgmts:CIM_DataFile.Name='" + Replace(FileIn, "\", "\\") + "'")
If Err.Number <> 0 Then
WScript.Echo "File:" + vbCrLf + FileIn + vbCrLf + vbCrLf +"Error" + vbCrLf + Err.Description
WScript.Quit 1
End If
NewName = Mid(File.LastModified, 1, 14)
With CreateObject("Scripting.FileSystemObject")
NewName = DirOut + "\" + .GetBaseName(FileIn) + " " + NewName + "." + .GetExtensionName(FileIn)
A = .CopyFile(FileIn, NewName, True)
End With
If Err.Number <> 0 Then
WScript.Echo "In File:" + vbCrLf + FileIn + vbCrLf + vbCrLf + "Out Folder:" + vbCrLf + DirOut + vbCrLf + vbCrLf + "Error" + vbCrLf + Err.Description
WScript.Quit 2
End If
On Error GoTo 0
' WScript.Echo "Script completed successfully"
WScript.Quit 0
Можно вызвать скрипт следующим образом, например: Wscript //NoLogo "Z:\я180914.vbs" "Z:\Муз\108_Бригада_С\12 - Скорый поезд придет в 6 часов.mp3" "Z:\Box_Out"
То есть
Wscript //NoLogo "Имя скрипта" "Имя копируемого файла" "Имя выходной папки"
Если скрипт запускается без аргументов, то возьмутся данные из явно прописанных путей в самом скрипте
А я ничего не перепутал? Пути к файлам в этой строке вводить? »
Перепутали.
Вводить надо здесь:
Этот файл я добавлю в диспетчер заданий виндовс »
https://i.imgur.com/cKyNB5I.png
"%SystemRoot%\System32\wscript.exe"//b "C:\Users\Alexander\OneDrive\work\new\1.vbs" "C:\Users\Alexander\OneDrive\work\new\1.bat" "C:\Users\Alexander\OneDrive\work\new\1"
Для начала таки рекомендую опробовать работу без параметра //b — на предмет возможных ошибок. Затем, если всё будет нормально, можете его добавить.
Alexander_88
14-09-2018, 23:08
Спасибо, получилось. Я параметр bb не добавлял, никаких окон не всплывало, может его и не нужно добавлять или лучше добавить?
И еще добавлять надо и в файле vbs и в диспетчере заданий в аргументах?
У меня сейчас файл (нижние строки) выглядит так.
Set objFSO = Nothing
Else
WScript.Echo "Usage: wscript.exe //nologo "C:\Users\Alexander\OneDrive\work\new\1.vbs" "C:\Users\Alexander\OneDrive\work\new\1.bat" "C:\Users\Alexander\OneDrive\work\new\1""
WScript.Quit 1
End If
WScript.Quit 0
Я параметр bb не добавлял, »
Не «bb». «//b», причём именно с двумя слэшами.
никаких окон не всплывало, »
Если укажете имя несуществующего файла или несуществующего каталога — окна сообщений появятся. Если не укажете ровно два аргумента для скрипта — окно с сообщением появится.
может его и не нужно добавлять или лучше добавить? »
Смотрите сами, что Вам важнее.
И еще добавлять надо и в файле vbs и в диспетчере заданий в аргументах?
У меня сейчас файл (нижние строки) выглядит так. »
В скрипт ничего добавлять не нужно, верните то, что там было изначально.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.