Cómo crear un script por lotes para hacer una copia de seguridad de un archivo específico con una carpeta de destino única (Windows)

Cómo crear un script por lotes para hacer una copia de seguridad de un archivo específico con una carpeta de destino única (Windows)

Estoy intentando configurar un viejo juego mío (fallout new vegas 1.4.0.525) que disfruto, sin embargo, es famoso por la corrupción de archivos guardados. Lo que me gustaría preguntar es si es posible crear un script por lotes que copie los archivos guardados y coloque los archivos guardados copiados en una carpeta para ese conjunto particular de guardados respaldados y asigne a la carpeta un nombre único según la hora. se ejecuta el script. Mi sistema operativo es Windows 10.

Básicamente, el proceso con el que estoy buscando ayuda es

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

La idea aproximada para el código de tiempo que busco es HHDDMMYYYY (Ej. 1203042019)

Las partidas guardadas desde las que deseo que se copie el script se encuentran en C:\Users-USER-\Documents\My Games\FalloutNV\Saves y las carpetas que contienen las copias de seguridad se encuentran en F:\Backups. Los archivos guardados que necesitan copiarse vienen en tipos de archivos .fos y .nvse (.fos es el tipo de archivo guardado del juego y .nvse es un tipo de archivo guardado creado por un mod además de los archivos guardados normales para la configuración del mod)

Si es posible, me gustaría saber si el script se puede ejecutar cada vez que abro un programa específico (Vortex, que es un administrador y lanzador de mods).

Muchas gracias de antemano.

editado para claridad

Respuesta1

Aunque está escrito en PowerShell y no en un archivo por lotes, funcionará de forma nativa en Windows 10 sin necesidad de complementos ni extras.

Creo que lo que buscas es algo similar a lo siguiente. En mi ejemplo, intenté incluir muchos comentarios para que pueda comenzar. Está escrito en Powershell, por lo que deberá guardar el script como "myScript.ps1" y luego crear un acceso directo en su escritorio a "PowerShell.exe -Archivo C:\users\me\whereeverthescriptis\myScript.ps1".

Esto intentará realizar una copia de seguridad; iniciará la aplicación si tiene éxito:

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

información relacionada