is there a way to export registry key but in an incremental way , many copies ?


Recommended Posts

Hi

i would to export some registry key with a bat file but in incremental way  (keep many reg files , with a name and a suffix for example export1.reg export2.reg and so on ) ?

I 'm thinking about a bat file ,just because i can use the windows 11 or 10 task manager and run every x hours or every day

i don't want to export the entire registry but only 1 key or 2 ,with all the subkeys and keep all them

I use a free portable backup jubut portable , cool program ,but only for files, and macrium for image

i'm looking for a script / bat , can a script/bat file do it?

I have't found a free program to export them

thanks

@echo off
setlocal enabledelayedexpansion

set /p "numKeys=Enter the number of registry keys to export: "
set /p "backupDir=Enter the backup directory path: "

if not exist "%backupDir%" mkdir "%backupDir%"

set "baseFileName=export"
set "fileExt=.reg"
set "counter=1"

for /l %%i in (1,1,%numKeys%) do (
    set /p "key%%i=Enter the location of registry key #%%i: "
)

:loop
set "fileName=%baseFileName%!counter!%fileExt%"
set "filePath=%backupDir%\!fileName!"

for /l %%i in (1,1,%numKeys%) do (
    reg export "!key%%i!" "!filePath!" /y
)

set /p "continue=Do you want to export another set of registry keys? (Y/N): "
if /i "!continue!"=="Y" (
    set /a "counter+=1"
    goto loop
)

 

  On 21/04/2024 at 08:15, cacoe said:

 

Expand  

hi Cacoe

may i a question ?

let's say i want to backup these keys 

  Quote

HKEY_CURRENT_USER\Software\Mozilla

Expand  

to X:\backupregistry

is your script correct ?

I have added HKEY_CURRENT_USER\Software\Mozilla 

the backup folder is X:\backupregistry

about the number of registry key to export what does it mean how many backups?

thanks Caoce

@echo off
setlocal enabledelayedexpansion

set /p "numKeys=Enter the number of registry keys to export: "
set /p "backupDir=x:\backupregisry: "

if not exist "%backupDir%" mkdir "%backupDir%"

set "baseFileName=export"
set "fileExt=.reg"
set "counter=1"

for /l %%i in (1,1,%numKeys%) do (
    set /p "key%%i=HKEY_CURRENT_USER\Software\Mozilla #%%i: "
)

:loop
set "fileName=%baseFileName%!counter!%fileExt%"
set "filePath=%backupDir%\!fileName!"

for /l %%i in (1,1,%numKeys%) do (
    reg export "!key%%i!" "!filePath!" /y
)

set /p "continue=Do you want to export another set of registry keys? (Y/N): "
if /i "!continue!"=="Y" (
    set /a "counter+=1"
    goto loop
)

 

## Export registry key

# Specify registry key
$registryKey = "HKEY_CURRENT_USER\Software\Mozilla"

# Specify the path to save .reg file
$exportPath = "X:\backupregistry\Mozilla.reg"

# Export the registry key
Invoke-Expression -Command "reg export `"$registryKey`" `"$exportPath`""

# Check if the export was successful
if (Test-Path -Path $exportPath) {
    Write-Host "Registry key exported successfully."
} else {
    Write-Host "Failed to export registry key."
}

Save as <filename>.ps1, run with PowerShell.

  • Thanks 2
  On 21/04/2024 at 11:44, binaryzero said:
## Export registry key

# Specify registry key
$registryKey = "HKEY_CURRENT_USER\Software\Mozilla"

# Specify the path to save .reg file
$exportPath = "X:\backupregistry\Mozilla.reg"

# Export the registry key
Invoke-Expression -Command "reg export `"$registryKey`" `"$exportPath`""

# Check if the export was successful
if (Test-Path -Path $exportPath) {
    Write-Host "Registry key exported successfully."
} else {
    Write-Host "Failed to export registry key."
}

Save as <filename>.ps1, run with PowerShell.

Expand  

Hi @binaryzero  @cacoe

if i click on run with powershell it does work ,I have tried even  in power shell ISE and the error translated in English with google translator is

Failed to load file X:\backupregistryJriver\eportaregistryJriver.ps1. Script execution is disabled on your system. For more information,
see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
    + CategoryInfo : Protection error: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

here a command

  Quote

 Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

Expand  

so i opened powershell as administrator windows 11 pro , and copied everything it does create it but only 1 registry backup

i would like to create many backups and only 1

could be make maybe with the bat/cmd  files many files (i have no limit)?

thanks

Set-ExecutionPolicy unrestricted

# Import CSV file
$csvData = Import-Csv -Path "X:\backupregistry\regkeys.csv"

# Backup directory
$backupDir = "X:\backupregistry"

# Check the backup directory exists
if (!(Test-Path -Path $backupDir)) {
    New-Item -ItemType Directory -Path $backupDir | Out-Null
}

# Loop through each registry key in the CSV file
foreach ($row in $csvData) {
    $key = $row.RegistryKey

    # Define the backup file path
    $backupFile = Join-Path -Path $backupDir -ChildPath ("$(($key -replace '\\', '_')).reg")

    # Export the registry key
    Invoke-Expression -Command "reg export `"$key`" `"$backupFile`""

    # Check if the .reg file has been created
    if (Test-Path -Path $backupFile) {
        Write-Output "Backup for $key created successfully at $backupFile"
    }
    else {
        Write-Output "Failed to create backup for $key"
    }
}

Save as ps1. Create a csv file with the header "RegistryKey", list key paths underneath. 

  On 21/04/2024 at 15:52, binaryzero said:

Set-ExecutionPolicy unrestricted

 

Expand  

hi

i have set unrestricted by default

Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

thanks

  On 21/04/2024 at 09:09, drugo said:

hi Cacoe

may i a question ?

let's say i want to backup these keys 

to X:\backupregistry

is your script correct ?

I have added HKEY_CURRENT_USER\Software\Mozilla 

the backup folder is X:\backupregistry

about the number of registry key to export what does it mean how many backups?

thanks Caoce

@echo off
setlocal enabledelayedexpansion

set /p "numKeys=Enter the number of registry keys to export: "
set /p "backupDir=x:\backupregisry: "

if not exist "%backupDir%" mkdir "%backupDir%"

set "baseFileName=export"
set "fileExt=.reg"
set "counter=1"

for /l %%i in (1,1,%numKeys%) do (
    set /p "key%%i=HKEY_CURRENT_USER\Software\Mozilla #%%i: "
)

:loop
set "fileName=%baseFileName%!counter!%fileExt%"
set "filePath=%backupDir%\!fileName!"

for /l %%i in (1,1,%numKeys%) do (
    reg export "!key%%i!" "!filePath!" /y
)

set /p "continue=Do you want to export another set of registry keys? (Y/N): "
if /i "!continue!"=="Y" (
    set /a "counter+=1"
    goto loop
)

 

Expand  

The number is simply the amount of keys you would like to save, so if you know you want to save 5 keys, enter 5, then you will proceed to get 5 prompts for 5 different key locations, then it will save to 5 different files to the backup location.

All entries under each key will be saved to each file.

  On 21/04/2024 at 17:05, cacoe said:

The number is simply the amount of keys you would like to save, so if you know you want to save 5 keys, enter 5, then you will proceed to get 5 prompts for 5 different key locations, then it will save to 5 different files to the backup location.

All entries under each key will be saved to each file.

Expand  

hi Cacoe

but there is something doesn't work , might you please check it?

thanks

@echo off
setlocal enabledelayedexpansion

set /p "numKeys=5"
set /p "backupDir=x:\backupregistry\"

if not exist "%backupDir%" mkdir "%backupDir%"

set "baseFileName=export"
set "fileExt=.reg"
set "counter=1"

for /l %%i in (1,1,%numKeys%) do (
    set /p "key%%i=HKEY_CURRENT_USER\Software\Mozilla"
)

:loop
set "fileName=%baseFileName%!counter!%fileExt%"
set "filePath=%backupDir%\!fileName!"

for /l %%i in (1,1,%numKeys%) do (
    reg export "!key%%i!" "!filePath!" /y
)

set /p "continue=Do you want to export another set of registry keys? (Y/N): "
if /i "!continue!"=="Y" (
    set /a "counter+=1"
    goto loop
)

 

  On 21/04/2024 at 18:41, drugo said:

hi Cacoe

but there is something doesn't work , might you please check it?

thanks

@echo off
setlocal enabledelayedexpansion

set /p "numKeys=5"
set /p "backupDir=x:\backupregistry\"

if not exist "%backupDir%" mkdir "%backupDir%"

set "baseFileName=export"
set "fileExt=.reg"
set "counter=1"

for /l %%i in (1,1,%numKeys%) do (
    set /p "key%%i=HKEY_CURRENT_USER\Software\Mozilla"
)

:loop
set "fileName=%baseFileName%!counter!%fileExt%"
set "filePath=%backupDir%\!fileName!"

for /l %%i in (1,1,%numKeys%) do (
    reg export "!key%%i!" "!filePath!" /y
)

set /p "continue=Do you want to export another set of registry keys? (Y/N): "
if /i "!continue!"=="Y" (
    set /a "counter+=1"
    goto loop
)

 

Expand  

I don't see the issue, I tested it, it's a batch file, I ran it, set it to only do 1 key, selected a random key and it saved the contents to a reg file. What is not working?

  On 21/04/2024 at 20:50, Dick Montage said:

Would it not make sense to just learn PowerShell? Literally so useful

Expand  

This. 

I provided two code samples, with comments; up to them now...

  • Like 2
  On 21/04/2024 at 22:24, cacoe said:

I don't see the issue, I tested it, it's a batch file, I ran it, set it to only do 1 key, selected a random key and it saved the contents to a reg file. What is not working?

Expand  

hi Cacoe

it does not save any reg files...

i have tried even this key with all the sub keys

for /l %%i in (1,1,%numKeys%) do (
    set /p "key%%i=HKEY_CURRENT_USER\Software\J. River"
)

maybe the problem is this

set "baseFileName=export"
set "fileExt=.reg"
set "counter=1"

i should set  ?

set "fileExt=backup.reg

thanks pal 

  On 21/04/2024 at 15:52, binaryzero said:
# Import CSV file
$csvData = Import-Csv -Path "X:\backupregistry\regkeys.csv"

# Backup directory
$backupDir = "X:\backupregistry"

# Check the backup directory exists
if (!(Test-Path -Path $backupDir)) {
    New-Item -ItemType Directory -Path $backupDir | Out-Null
}

# Loop through each registry key in the CSV file
foreach ($row in $csvData) {
    $key = $row.RegistryKey

    # Define the backup file path
    $backupFile = Join-Path -Path $backupDir -ChildPath ("$(($key -replace '\\', '_')).reg")

    # Export the registry key
    Invoke-Expression -Command "reg export `"$key`" `"$backupFile`""

    # Check if the .reg file has been created
    if (Test-Path -Path $backupFile) {
        Write-Output "Backup for $key created successfully at $backupFile"
    }
    else {
        Write-Output "Failed to create backup for $key"
    }
}
Expand  

Save ^ as "BackupRegistryKeys.ps1".

Create a CSV file called "regkeys.csv", save it in X:\Backupregistry, copy and paste the below.

RegistryKey,
HKEY_CURRENT_USER\Software\Mozilla,
HKEY_CURRENT_USER\Software\J. River,

(or use Excel, save as .csv)

Open PowerShell, run the script, .\BackupRegistryKeys.ps1. Tada

When you want to add more registry keys, add them to the csv file. No need to hardcode paths in the script...

  • Thanks 2

Tidy little script that :) -
(+Extra credit for commenting it properly👍
)

Still surprises me there is no export-item functionality for the registry in PowerShell, you can do everything else - but for exports you still have to call reg.exe
 

Instead of adding number -01 etc index numbers, you could just use the date, if you did that you could have just a 1 liner, something like this:

reg export "HKEY_CURRENT_USER\Software\Mozilla" "X:\backupregistry\%DATE:/=-%.reg" /y

Depending on your local date format you might need to change the format of the date variable to suit, or add the time variable too if you are doing multiple exports per day.

  On 22/04/2024 at 16:08, binaryzero said:

Save ^ as "BackupRegistryKeys.ps1".

Create a CSV file called "regkeys.csv", save it in X:\Backupregistry, copy and paste the below.

RegistryKey,
HKEY_CURRENT_USER\Software\Mozilla,
HKEY_CURRENT_USER\Software\J. River,

(or use Excel, save as .csv)

Open PowerShell, run the script, .\BackupRegistryKeys.ps1. Tada

When you want to add more registry keys, add them to the csv file. No need to hardcode paths in the script...

Expand  

hi

first i want to thank you so much

but i can't understand why under windows 11 pro 64bit , from the extension menu run with powershell it doesn't work

it's just handy

will the script save me many *.reg files , like backup.reg , backup1.reg , backup2.reg and so on

appreciate it a lot 

# Import CSV file
$csvData = Import-Csv -Path "X:\backupregistry\regkeys.csv"

# Backup directory
$backupDir = "X:\backupregistry"

# Check the backup directory exists
if (!(Test-Path -Path $backupDir)) {
    New-Item -ItemType Directory -Path $backupDir | Out-Null
}

# Loop through each registry key in the CSV file
foreach ($row in $csvData) {
    $key = $row.RegistryKey

    # Get the current date and time
    $date = Get-Date -Format "yyyyMMdd_HHmmss"

    # Define the backup file path
    $backupFile = Join-Path -Path $backupDir -ChildPath ("$(($key -replace '\\', '_'))-$date.reg")

    # Export the registry key
    Invoke-Expression -Command "reg export `"$key`" `"$backupFile`""

    # Check if the .reg file has been created
    if (Test-Path -Path $backupFile) {
        Write-Output "Backup for $key created successfully at $backupFile"
    }
    else {
        Write-Output "Failed to create backup for $key"
    }
}

Added a line to append the date and time to the end of the filename; you can change the format yourself, https://lazyadmin.nl/powershell/get-date/.

You're going to need to run this in an elevated PowerShell (run as administrator) session if you're backing up HKLM keys.

If you want to create a shortcut, create BackupRegistryKeys.cmd and put "start %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Executionpolicy Bypass -Noninteractive -File "X:\backupregistry\BackupRegistryKeys.ps1". Right click, run as administrator.

Edited by binaryzero

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • We went from a Latitude 7450 to Dell Pro 14 Plus PB14250
    • EA Sports UFC 5 is free-to-play on Xbox Series X|S this weekend by Pulasthi Ariyasinghe Every Thursday Microsoft brings in a fresh slate of games for Xbox gamers to try over the weekend as a part of its Free Play Days promotion. The latest refresh that arrived today only revealed a single title for the weekend, and that's EA Sports UFC 5. This is a special occasion as well. Unlike the standard events, this one does not require any tier of Game Pass to jump in. All Xbox Series X|S owners can play the game over the weekend, even if they do not have a Core subscription. As always, any progress made during the weekend also carries over automatically if you decide to purchase the game afterward. Coming in from EA Sports, UFC 5 is the latest entry in the long-running mixed martial arts fighting games. This installment landed in 2023 for the latest generation consoles. Built on DICE's Frostbite Engine for the first time, the title event received an M rating by the ESRB for its realistic injury system, as EA wanted to make a more authentic experience akin to the real-world sport. The damage system, dubbed the Real Impact System, involves depicting blood and sweat on fighters as well as facial injuries. Having injuries like bruised eyes or broken noses can even affect the performance of a fighter due to impaired vision or breathing difficulty. A doctor stoppage may even happen if the injuries become too severe. UFC 5 offers a single-player career mode to become the top-ranked fighter, online modes for competitive action, and special events tied to real-world fights. Here are the store links for the game: UFC 5 - $27.99 (Xbox Series X|S) UFC 5 Deluxe Edition - $31.99 (Xbox Series X|S) UFC 5 Ultimate Edition - $89.99 (Xbox Series X|S) This Free Play Days promotion will end on Sunday, June 29, at 11:59 pm PT. Following this, expect another round of games to enter the program next Thursday, July 3.
    • Windows 11 KB5060826 optional update brings better Setup, new data migration tool, more by Sayan Sen Alongside KB5060829 for Windows 11 24H2, Microsoft has also released its C-release non-security preview update for Windows 11 23H2 and 22H2 today. The new update is rolling out under KB5060826 (builds 22621.5549 and 22631.5549). KB5060826 brings an upgraded Setup which will now let admins choose whether to deploy critical updates during the OOBE (the initial out-of-box experience setup on Windows). Alongside that, it also adds the new PC migration experience on Windows Backup, as well as the default app changes related to the European Economic Area (EEA) region. The full changelog is given below: First up we have the changes and improvements for Gradual Rollout: [App defaults] New! We are rolling out some small changes in the European Economic Area (EEA) region for default browsers through the Set default button in Settings > Apps > Default apps: Additional file and link types will be set for the new default browser, if it registers them. The new default browser will be pinned to the Taskbar and Start menu unless you choose not to pin it by clearing the checkboxes. There is now a separate one-click button for browsers to change your .pdf default, if the browser registers for the .pdf file type. [PC Migration] New! The PC-to-PC migration experience in Windows is starting to roll out. You’ll begin to see the landing and the pairing page in the Windows Backup app, giving you a first look at what’s coming. In the full experience, you’ll be able to transfer files and settings from an old PC to a new one during setup. Support for this feature during PC setup will arrive in a future update. The rollout is being introduced in phases to support a smooth experience. [Windows Share] ​​​​​​​New! When you share links or web content using the Windows share window, you will see a visual preview for that content. Up next, we have Normal Rollout features: [Windows Setup] New! Admins can configure whether a new device gets critical updates during the out-of-box experience (OOBE). The update has a single known issue related to Noto fonts. You can view the support article here on Microsoft's official website. The update can be obtained by clicking on "Check for optional updates" inside Windows Update. You can also download it manually from Microsoft Update Catalog website.
    • American? Yer whole 120v limitation is madness.  You can still get low powered pcs , nice, that'll do the job 
    • People want a resizable taskbar, not tiny icons on a fat one. Microsoft, you've done it again.
  • Recent Achievements

    • One Month Later
      jfam earned a badge
      One Month Later
    • First Post
      TheRingmaster earned a badge
      First Post
    • Conversation Starter
      Kavin25 earned a badge
      Conversation Starter
    • One Month Later
      Leonard grant earned a badge
      One Month Later
    • Week One Done
      pcdoctorsnet earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      567
    2. 2
      ATLien_0
      186
    3. 3
      +FloatingFatMan
      176
    4. 4
      Michael Scrip
      144
    5. 5
      Xenon
      115
  • Tell a friend

    Love Neowin? Tell a friend!