Como fazer um script em lote para fazer backup de um arquivo específico com uma pasta de destino exclusiva (Windows)

Como fazer um script em lote para fazer backup de um arquivo específico com uma pasta de destino exclusiva (Windows)

Estou tentando configurar um jogo antigo meu (fallout new vegas 1.4.0.525) que gosto, porém é famoso por corrupções de arquivos salvos. O que eu gostaria de perguntar é se é possível criar um script em lote que copie os arquivos salvos e coloque os arquivos salvos copiados em uma pasta para aquele conjunto específico de salvamentos de backup e atribua à pasta um nome exclusivo com base na hora o script é executado. Meu sistema operacional é o Windows 10.

Basicamente, o processo para o qual estou procurando ajuda é

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

A ideia aproximada para o timecode que pretendo é HHDDMMYYYY (Ex. 1203042019)

Os salvamentos dos quais desejo que o script copie estão localizados em C:\Users-USER-\Documents\My Games\FalloutNV\Saves com as pastas contendo os salvamentos de backup localizadas em F:\Backups. Os arquivos salvos que precisam ser copiados vêm nos tipos de arquivo .fos e .nvse (.fos é o tipo de arquivo salvo do jogo e .nvse é um tipo de arquivo salvo criado por um mod, além dos arquivos salvos regulares para configuração do mod)

Se possível, gostaria de saber se o script pode ser executado sempre que eu abrir um programa específico (Vortex, que é um gerenciador e inicializador de mod).

Muito obrigado antecipadamente.

editado para clairty

Responder1

Embora escrito em PowerShell e não em um arquivo em lote, funcionará nativamente no Windows 10 sem a necessidade de plug-ins ou extras.

Acredito que algo semelhante ao abaixo é o que você procura. No meu exemplo - tentei incluir muitos comentários para você começar. Está escrito em Powershell - então você precisaria salvar o script como "myScript.ps1" e, em seguida, criar um atalho em seu desktop para "PowerShell.exe -File C:\users\me\whereeverthescriptis\myScript.ps1"

Isso tentará fazer um backup e iniciará o aplicativo se for bem-sucedido:

#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"
}

informação relacionada