![Como fazer um script em lote para fazer backup de um arquivo específico com uma pasta de destino exclusiva (Windows)](https://rvso.com/image/1586932/Como%20fazer%20um%20script%20em%20lote%20para%20fazer%20backup%20de%20um%20arquivo%20espec%C3%ADfico%20com%20uma%20pasta%20de%20destino%20exclusiva%20(Windows)%20.png)
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"
}