Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как с помощью bat скрипта объединить reg файлы в один?

Ответить
Настройки темы
CMD/BAT - Как с помощью bat скрипта объединить reg файлы в один?

Новый участник


Сообщения: 41
Благодарности: 2

Профиль | Отправить PM | Цитировать


Всем привет. Есть такой мини bat скрипт. Который ищет нужный раздел, сохраняет в файл и после удаляет его(В данном случае я пока поставил echo что бы не удалял)
Вопрос как сделать что бы всё сохранялось в один файл без замены? Ну или как после, все файлы объединить в один? При этом что бы не было такой строки(Windows Registry Editor Version 5.00) каждый раз при копировании.

Скрытый текст
Код: Выделить весь код
@echo on
for /f "tokens=*" %%b in ('reg query "HKLM\SOFTWARE\test1" /s /f "test.314" /k ^| find /i "test.314"') do (
reg export "%%b" D:\Desktop\backup%time:~6,2%%time:~9,2%%time:~12,2%.reg /y
echo reg delete "%%b" /f
)
for /f "tokens=*" %%b in ('reg query "HKLM\SOFTWARE\test1" /s /f "test.313" /k ^| find /i "test.313"') do (
reg export "%%b" D:\Desktop\backup%time:~6,2%%time:~9,2%%time:~12,2%.reg /y
echo reg delete "%%b" /f
)


Объединять пробовал так, но как выше описал способ не подходит.
Скрытый текст
Код: Выделить весь код
type D:\Desktop\reg_backup\backup2312.reg D:\Desktop\reg_backup\backup2324.reg > D:\Desktop\reg_backup\combined.reg


Суть всего:
Найти нужный параметр/ветку, сделать резервную копию, удалить.
Если захотел восстановить всё что удалил, всегда можно добавить обратно.
С поиском и удалением нет проблем, с резервной копией есть. Не понятно как писать всё в один файл что бы потом не объединять всё.

Отправлено: 01:52, 10-07-2024

 

Новый участник


Сообщения: 41
Благодарности: 2

Профиль | Отправить PM | Цитировать


Решил сам))
но, пока не понял как тоже самое сделать на powershell что бы было это компактнее, привык в bat, там некоторые вещи такие проще и пишутся в одну две строки, на powershell же получается довольно таки много кода
Часто комбинирую и то и то, работает, но да понимаю проще писать на чем то одном))
Файл 1(bat):
Скрытый текст
Код: Выделить весь код
@echo off
set /a i=0
for /f "tokens=*" %%b in ('reg query "HKLM\SOFTWARE\test1" /s /f "test.313" /k ^| find /i "test.313"') do (
	set /a i+=1
    reg export "%%b" %~dp0\reg_backup\backup%i%.reg /y
    echo reg delete "%%b" /f
)
for /f "tokens=*" %%b in ('reg query "HKLM\SOFTWARE\test1" /s /f "test.314" /k ^| find /i "test.314"') do (
	set /a i+=1
    reg export "%%b" %~dp0\reg_backup\backup%i%.reg /y
    echo reg delete "%%b" /f
)
for /f "tokens=*" %%b in ('reg query "HKLM\SOFTWARE\test1" /s /f "test.315" /k ^| find /i "test.315"') do (
	set /a i+=1
    reg export "%%b" %~dp0\reg_backup\backup%i%.reg /y
    echo reg delete "%%b" /f
)
powershell -File "%~dp0\reg_backup\33.ps1"


Файл 2(PowerShell):
Скрытый текст
Код: Выделить весь код
$ScriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
$regFiles = Get-ChildItem -Path $ScriptPath -Filter *.reg | Select-Object -ExpandProperty FullName

$combinedRegFile = Join-Path -Path $ScriptPath -ChildPath "combined.reg"

Get-Content $regFiles[0] | Set-Content $combinedRegFile
$regFiles | Select-Object -Skip 1 | ForEach-Object { Get-Content $_ | Select-Object -Skip 2 | Add-Content $combinedRegFile }
Get-ChildItem -Path $ScriptPath -Filter *.reg | Where-Object { $_.FullName -ne $combinedRegFile } | Remove-Item


По итогу получаем правильный файл:
Скрытый текст

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\test1\test.313_3100]
"1"="21"

[HKEY_LOCAL_MACHINE\SOFTWARE\test1\test.314_3101]
"2"="12"

[HKEY_LOCAL_MACHINE\SOFTWARE\test1\test.315_3102]
"32"="13"




Глобально ещё не проверял, так тестово только, но вроде работает.
Если напишите более простой вариант только на powershell будет отлично. Сам в скриптах мало понимаю, но изучаю потихоньку.
Ну или может подскажете где ошибки и как лучше сделать.

Ещё тоже самое для файлов хочу сделать))

Последний раз редактировалось ivan456, 10-07-2024 в 05:13.


Отправлено: 05:06, 10-07-2024 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6545
Благодарности: 1493

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$source = "$PSScriptRoot\*.reg"
$combined = "$PSScriptRoot\combined.reg"

"Windows Registry Editor Version 5.00" > $combined
dir $source -Exclude "$(Split-Path $combined -Leaf)" -OutVariable s |% {gc $_ |select -skip 1} >> $combined
$s |del

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 10-07-2024 в 17:13.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:01, 10-07-2024 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как с помощью bat скрипта объединить reg файлы в один?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Как объединить два скрипта в один? temphard Скриптовые языки администрирования Windows 5 09-12-2019 11:17
CMD/BAT - Как объединить в один все текстовые файлы заданной папки? ruslaw Скриптовые языки администрирования Windows 2 15-01-2018 15:24
CMD/BAT - Можно ли средствами cmd объединить однотипные XML-файлы в один? uzlprog Скриптовые языки администрирования Windows 4 09-06-2016 08:41
CMD/BAT - Как объеденить reg, bat в один exe? danneo Программирование и базы данных 12 03-07-2012 00:23
Как объединить два скрипта в один Fantasy22 AutoIt 1 04-12-2009 12:32




 
Переход