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

    • Steam Summer Sale 2025 is here offering weeks of massive discounts for PC gamers by Pulasthi Ariyasinghe It is time to jump into another Steam Summer Sale. The 2025 edition of the yearly massive sale at the biggest PC gaming store on the market has just kicked off, and it is touting thousands of discounts for everything from the oldest classics to the newest releases and everything in between. The Steam servers predictably wobbled for a while at the launch of the sale, but things finally seem to be calming down enough to browse the latest sales. The front page is the place to be for anyone looking for recommendations, with it putting the spotlight on fresh games every day. However, keep in mind that the discounts themselves will not be changing and will remain static throughout the sale. Some recent blockbusters like Metaphor: ReFantazio, Monster Hunter Wilds, Sid Meier's Civilization VII, Black Myth: Wukong, Call of Duty: Black Ops 6, Clair Obscur: Expedition 33, Warhammer 40,000: Space Marine 2, Indiana Jones and the Great Circle, Blue Prince, Kingdom Come: Deliverance II, and much more are currently discounted. Valve has also brought back the special "Deep Discounts" section, letting Steam users find the most deeply discounted games quickly straight from the front page. The page has a selection of "all-time greats" with 85% to 95% cuts to their standard prices. This time, it includes titles like Black Mesa, Little Nightmares II, Kerbal Space Program, Steins Gate, Furi, Crash Bandicoot N. Sane Trilogy, Star Wars Battlefront II, Robocop Rogue City, and much more for just a few dollars each. As for the duration, the Steam Summer Sale of 2025 will be open for business until July 10, giving all of you two whole weeks to try and keep your wallets closed tight. As always, be sure to read our Weekend PC Game Deals special this coming Saturday to check out the biggest highlights from the sale. If you miss this store-wide promotion, Valve's next major sale will land this September as part of a new time slot for the Steam Autumn Sale. Head over here to see the complete 2025 sales roadmap for the platform.
    • Great way to get an entire physical model of the products (i.e. end users) and better market them...definitely not something I'd want on ANY of my personal devices, but can be useful in retail shops for sure.
    • Hi all. ISP pushing me from 800Mbps to  1200Mbps, however, I want to buy my own modem. Theirs have been a bit wonky, would rather just handle it myself. Data capped at 1.2TB, haven't gone over yet (although pretty close at times), paying $15 rental, some have suggested a DIY solution. Anyway, I'm in need of a few upgrades and need some suggestions. My onboard LAN is capped at 1Gbit (I219-v and a Killer E2500), choose your poison? Anyway, an add-on NIC might be in order, not sure what to go with. Then there's the modem and router. A lot of these modems are very close in price, some supporting 2.3 - 2.5Gbit, others a flat 1Gbit that wouldn't let me touch my 1200Mbit that I'm paying. Boils down to a Netgear CM3000 (for below cost due to built up rewards) or Motorola B12. Then of course, there's my router. I bought a Nighthawk X10 a while ago for $10 at thrift, before this whole upgrade thing came up. Its ports are capped at 1Gbit, but it DOES have a 10Gbit SFP+ port. I could possibly get a NIC that has sfp+ port, or a switch that has 2.5Gbit ports. I'm the only wired PC in the house, everything else is wifi, no foreseeable new wired connections in the far off future. Or, I could get an RS100 router that would let me use my 1200Mbit connection. I've been subscribed for about 6 years, so have paid about $1080 in rental since then. It's too bad I didn't DIY since the beginning, it would have been paid of long ago -_- better late than never I guess. What's your thought on this?
    • Always nice to have an updated official windows installer / ISO.
  • Recent Achievements

    • 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
    • Rising Star
      Phillip0web went up a rank
      Rising Star
    • One Month Later
      Epaminombas earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      550
    2. 2
      ATLien_0
      206
    3. 3
      +FloatingFatMan
      180
    4. 4
      Michael Scrip
      147
    5. 5
      Som
      119
  • Tell a friend

    Love Neowin? Tell a friend!