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

    • Surface Copilot+ PCs coming to classrooms from July 22, turbocharged with on-device AI by Paul Hill Microsoft has announced that it’s launching the new Surface Pro 12-inch and Surface Laptop 13-inch models specifically for education customers from July 22. The Redmond giant said that these devices are being launched as a direct response to feedback from educators who want practicality and ease of use in their diverse classrooms. These are both Copilot+ PCs so teachers and students will be able to leverage the latest AI features thanks to the dedicated Neural Processing Units (NPUs) that allow for on-device AI. The on-device AI, aside from delivering well-known features like Recall, will enable new education features such as a new app Microsoft is working on called Microsoft Learning Zone. Microsoft Learning Zone will allow teachers to create personalized lessons by adapting content from trusted sources like OpenStax, generating interactive games with Kahoot, and tracking students progress. Microsoft expects this to help teachers save time and deliver a more flexible and engaging classroom. Another AI feature that will be available is Click to Do. This lets students highlight text or images and get contextual help. It can be used to summarize a paragraph or explain a graph. To activate it, students can press the Windows key and click. This feature runs entirely on device so inputs to the AI are secure and you don’t need to ever worry about third-parties seeing. Finally, these devices will also have accessibility features such as Voice Access which lets you navigate with speech and Live Captions which provide real-time subtitles and translations for spoken content. These make the devices more inclusive for students with disabilities. Regarding security, these laptops come with the Microsoft Pluton security chip directly integrated into the processor for protecting sensitive data. It can protect data such as passwords and sign-ins, even if your device is stolen. Thanks to automatic Windows Updates, schools never need to worry about falling behind on updates either. With the impending demise of Windows 10 in mid-October, these Surface devices arrive just in time for schools looking for somewhere to upgrade to. Aside from AI features and security, Microsoft is also pushing other key features including easy repair with replacement components at the Microsoft Store and iFixit, their lightweight design and all-day battery life making them ideal for carrying and surviving the school day, and their compatibility with popular education apps such as TestNav, Google Classroom, Minecraft Education, and Adobe Express.
    • Taras Buria, do you think you could write more about Windows Vista? It is always such a pleasure — quite a pleasure — to see it mentioned in the title of a news article. What about an editorial?
  • Recent Achievements

    • Rising Star
      Phillip0web went up a rank
      Rising Star
    • One Month Later
      Epaminombas earned a badge
      One Month Later
    • One Year In
      Bert Fershner earned a badge
      One Year In
    • Reacting Well
      ChrisOdinUK earned a badge
      Reacting Well
    • One Year In
      Steviant earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      545
    2. 2
      ATLien_0
      205
    3. 3
      +FloatingFatMan
      170
    4. 4
      Michael Scrip
      149
    5. 5
      Som
      131
  • Tell a friend

    Love Neowin? Tell a friend!