![特定のファイルを一意の保存先フォルダでバックアップするバッチ スクリプトを作成する方法 (Windows)](https://rvso.com/image/1586932/%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%B8%80%E6%84%8F%E3%81%AE%E4%BF%9D%E5%AD%98%E5%85%88%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%A7%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%99%E3%82%8B%E3%83%90%E3%83%83%E3%83%81%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%20(Windows)%20.png)
私は、自分が楽しんでいる古いゲーム (Fallout New Vegas 1.4.0.525) をセットアップしようとしていますが、このゲームは保存ファイルの破損で有名です。私が聞きたいのは、保存ファイルをコピーし、コピーした保存ファイルを特定のバックアップ保存セットのフォルダーに配置し、スクリプトの実行時間に基づいてフォルダーに一意の名前を割り当てるバッチ スクリプトを作成できるかどうかです。私の OS は Windows 10 です。
基本的に私が助けを求めているプロセスは
Script started -> New Folder with a timestamp for name created -> save copied files to the new folder.
私が目指しているタイムコードのおおよその目安は、HHDDMMYYYY(例:1203042019)です。
スクリプトでコピーするセーブは C:\Users-USER-\Documents\My Games\FalloutNV\Saves にあり、バックアップ セーブを含むフォルダは F:\Backups にあります。コピーが必要なセーブ ファイルは .fos および .nvse ファイル タイプです (.fos はゲームのセーブ ファイル タイプで、.nvse は mod 設定用の通常のセーブ ファイルに加えて mod によって作成されるセーブ ファイル タイプです)
可能であれば、特定のプログラム (Mod マネージャーおよびランチャーである 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"
}