Как создать пакетный скрипт для резервного копирования определенного файла с уникальной папкой назначения (windows)

Как создать пакетный скрипт для резервного копирования определенного файла с уникальной папкой назначения (windows)

Я пытаюсь настроить свою старую игру (fallout new vegas 1.4.0.525), которая мне нравится, однако она печально известна повреждениями файлов сохранений. Я хотел бы спросить, возможно ли создать пакетный скрипт, который копирует файлы сохранений и помещает скопированные файлы сохранений в папку для этого конкретного набора резервных сохранений и назначает папке уникальное имя в зависимости от времени запуска скрипта. Моя ОС — Windows 10.

По сути, процесс, в котором я ищу помощь, заключается в следующем:

Script started -> New Folder with a timestamp for name created -> save copied files to the new folder. 

Грубо говоря, тайм-код, к которому я стремлюсь, выглядит так: ЧЧДДММГГГ (например, 1203042019).

Сохранения, которые я хочу, чтобы скрипт копировал, находятся в C:\Users-USER-\Documents\My Games\FalloutNV\Saves, а папки, содержащие резервные сохранения, находятся в F:\Backups. Файлы сохранения, которые нужно скопировать, имеют типы файлов .fos и .nvse (.fos — это тип файла сохранения игры, а .nvse — это тип файла сохранения, созданный модом в дополнение к обычным файлам сохранения для конфигурации мода).

Если возможно, я бы хотел узнать, можно ли запускать скрипт всякий раз, когда я открываю определенную программу (Vortex, которая является менеджером модов и средством запуска).

Большое спасибо заранее.

отредактировано для ясности

решение1

Хотя он написан на PowerShell, а не в виде пакетного файла, он будет работать в Windows 10 без необходимости установки каких-либо плагинов или дополнительных программ.

Я думаю, что вам нужно что-то похожее на то, что показано ниже. В моем примере я попытался включить много комментариев, чтобы вы могли начать. Он написан в Powershell, поэтому вам нужно будет сохранить скрипт как "myScript.ps1", а затем создать ярлык на рабочем столе для "PowerShell.exe -File C:\users\me\whereeverthescriptis\myScript.ps1"

Будет предпринята попытка создания резервной копии, в случае успеха запустится приложение:

#What do you want to backup?
$sourceFolder = "C:\users\bbell\Desktop\p"
#Where do you want to backup to?
$destinationFolder = "C:\Installs"

#Figure out a destination folder with a timestamp.  Store it in a variable so that the same folder name is used throughout the script if it takes over a second to run
$destinationFolderWithTimestamp = ($destinationFolder + "\" + (Get-Date -Format yyyy-mm-dd_HH-mmmm-ss))

#if <destination folder>\<current date and time> doesn't exist - create it!
If (!(Test-Path -Path $destinationFolderWithTimestamp)) {
    New-Item -ItemType Directory -Path $destinationFolderWithTimestamp
    Write-Host ($destinationFolderWithTimestamp + " Created")
}

try {
    #try a backup - stop if it fails
    Copy-Item -Recurse -Path $sourceFolder -Destination $destinationFolderWithTimestamp -ErrorAction Stop -force
    #confirm backup worked
    Write-Host "Backup Completed OK"
    #launch an app - in this case notepad - the "&" needs to be kept as it denotes launching something
    & C:\Windows\notepad.exe
} catch {
    #Error happened - inform user and do not launch
    Write-Host "Backup Failed - not launching app"
}

Связанный контент