Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Бекап (http://forum.oszone.net/showthread.php?t=336687)

Alexander_88 14-09-2018 16:24 2831339

Бекап
 
Здравствуйте, подскажите, хотел сделать бекап файла... файл один.
Как можно скопировать файл в определенную папку, указав имя на новой копии в виде имени файл, плюс добавить к имени дату и время?
Этот файл я добавлю в диспетчер заданий виндовс и будут делаться резервные копии :)

Iska 14-09-2018 17:39 2831346

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

нужно?

YuS_2 14-09-2018 18:38 2831351

Цитата:

Цитата Iska
ничего не понятно. »

Цитата:

Цитата Iska
что-то такое»

Дык, почему непонятно? Именно это и описано в условии...

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 2831352

Спасибо за ответы. Нужна просто функция копирования файла, и чтобы к имени добавлялась дата и время. (к имени копии, а не оригинала)
Еще, чтобы это все происходило не заметно для глаз пользователя (чтобы черные, синие окна не мелькали, никаких сообщений не выскакивало). Я поэтому и хотел vbs файлик.. когда он выполняется, никаких окон черных как в BAT не мелькает.

Iska 14-09-2018 19:02 2831356

Цитата:

Цитата Alexander_88
чтобы это все происходило не заметно для глаз пользователя (чтобы черные, синие окна не мелькали »

Alexander_88, тогда используйте wscript.exe вместо cscript.exe.

Цитата:

Цитата Alexander_88
никаких сообщений не выскакивало) »

Добавьте параметр //b:
Цитата:

//B Пакетный режим: подавляются отображение ошибок и запросов сценария

Alexander_88 14-09-2018 21:01 2831372

А я ничего не перепутал? Пути к файлам в этой строке вводить?

Код:

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 2831376

Alexander_88,
Вот вариант vbs+wmi
Код:

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 "Имя скрипта" "Имя копируемого файла" "Имя выходной папки"
Если скрипт запускается без аргументов, то возьмутся данные из явно прописанных путей в самом скрипте

Iska 14-09-2018 21:39 2831378

Цитата:

Цитата Alexander_88
А я ничего не перепутал? Пути к файлам в этой строке вводить? »

Перепутали.

Вводить надо здесь:
Цитата:

Цитата Alexander_88
Этот файл я добавлю в диспетчер заданий виндовс »


1
Код:

"%SystemRoot%\System32\wscript.exe"
2
Код:

//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 2831386

Спасибо, получилось. Я параметр 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


Iska 14-09-2018 23:34 2831389

Цитата:

Цитата Alexander_88
Я параметр bb не добавлял, »

Не «bb». «//b», причём именно с двумя слэшами.

Цитата:

Цитата Alexander_88
никаких окон не всплывало, »

Если укажете имя несуществующего файла или несуществующего каталога — окна сообщений появятся. Если не укажете ровно два аргумента для скрипта — окно с сообщением появится.

Цитата:

Цитата Alexander_88
может его и не нужно добавлять или лучше добавить? »

Смотрите сами, что Вам важнее.

Цитата:

Цитата Alexander_88
И еще добавлять надо и в файле vbs и в диспетчере заданий в аргументах?
У меня сейчас файл (нижние строки) выглядит так. »

В скрипт ничего добавлять не нужно, верните то, что там было изначально.


Время: 11:38.

Время: 11:38.
© OSzone.net 2001-