Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Бекап

Ответить
Настройки темы
VBS/WSH/JS - [решено] Бекап

Старожил


Сообщения: 413
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:24, 14-09-2018

 

Ветеран


Contributor


Сообщения: 22801
Благодарности: 6614

Профиль | Отправить PM | Цитировать


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
нужно?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:39, 14-09-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для YuS_2

Старожил


Сообщения: 151
Благодарности: 52

Профиль | Отправить PM | Цитировать


Цитата 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)

-------
scio me nihil scire

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:38, 14-09-2018 | #3


Старожил


Сообщения: 413
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 18:52, 14-09-2018 | #4


Ветеран


Contributor


Сообщения: 22801
Благодарности: 6614

Профиль | Отправить PM | Цитировать


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

Цитата Alexander_88:
никаких сообщений не выскакивало) »
Добавьте параметр //b:
Цитата:
//B Пакетный режим: подавляются отображение ошибок и запросов сценария
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:02, 14-09-2018 | #5


Старожил


Сообщения: 413
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
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", нажимаю ОК, и все.. копии нету

Отправлено: 21:01, 14-09-2018 | #6


Ветеран


Contributor


Сообщения: 1307
Благодарности: 759

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 14-09-2018 в 21:43.


Отправлено: 21:32, 14-09-2018 | #7


Ветеран


Contributor


Сообщения: 22801
Благодарности: 6614

Профиль | Отправить PM | Цитировать


Цитата 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 — на предмет возможных ошибок. Затем, если всё будет нормально, можете его добавить.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:39, 14-09-2018 | #8


Старожил


Сообщения: 413
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 23:08, 14-09-2018 | #9


Ветеран


Contributor


Сообщения: 22801
Благодарности: 6614

Профиль | Отправить PM | Цитировать


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

Цитата Alexander_88:
никаких окон не всплывало, »
Если укажете имя несуществующего файла или несуществующего каталога — окна сообщений появятся. Если не укажете ровно два аргумента для скрипта — окно с сообщением появится.

Цитата Alexander_88:
может его и не нужно добавлять или лучше добавить? »
Смотрите сами, что Вам важнее.

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

Отправлено: 23:34, 14-09-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Бекап

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Бекап Mr.Redder Microsoft Windows 7 3 21-08-2017 22:13
Восстановление - Бекап выбранных папок - ПО YDen Программное обеспечение Windows 4 21-04-2015 08:34
2008 R2 - Бекап 3DpacTe Windows Server 2008/2008 R2 2 21-08-2014 12:24
CMD/BAT - Бекап Andrey86 Скриптовые языки администрирования Windows 0 31-05-2012 10:28
Как сделать Бекап? Falcon1 Хочу все знать 3 09-06-2003 22:12




 
Переход