einfachbernd
Goto Top

Regexport Drucker - Printserver aus Export File ändern - Drucker neu verbinden?

Hi @all,

habe wieder einmal eine Bastelanfrage bekommen.

Müsste Script folgendes machen:
1. bestehende Drucker auf Clients auslesen
reg export "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" "%storage%\std.reg" /Y >nul
reg export "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" "%storage%\ext.reg" /Y >nul

2. REG-Files auslesen und alten Druckserver durch neuen ersetzen

3. Drucker neu verbinden

und bei 2. hänge ich nun
for %%a in (std ext) do (
 find /i "%s1alt%" "%storage%\%%a.reg" > "%storage%\%%a_S1_tmp.txt"  
  if not errorlevel 1 for /f %%i in ("%storage%\%%a_S1_tmp.txt") do (   

 find /i "%s2alt%" "%storage%\%%a.reg" > "%storage%\%%a_S2_tmp.txt"  
  if not errorlevel 1 for /f %%i in ("%storage%\%%a_S2_tmp.txt") do (   
)
Ich vermute mal dass ich in den 2te for-schleifen mit find

Anmerkung: Variablen s1alt, s2alt, s1neu, s2neu sowie storage sind zu beginn mit set xxx= definiert

Könnte mir da jemand was basteln?

Wär da Hit face-smile

Content-Key: 191989

Url: https://administrator.de/contentid/191989

Printed on: April 19, 2024 at 19:04 o'clock

Mitglied: 60730
60730 Sep 28, 2012 updated at 15:33:59 (UTC)
Goto Top
Moin,

Das macht man nicht....

So ein drucker wird ausgelesen, geloescht und dann unter neuem namen richtig eingebunden.

Da steckt viel mehr dahinter als tricksen in der reg in einem zweig vom langen baum.

Irgendwo in den vielen anderen freds wirst du sehen, dass das schon da war.
Incl. loesungen...

Gruss
Member: einfachBernd
einfachBernd Oct 01, 2012 at 09:12:35 (UTC)
Goto Top
Hi LimoSeil:

offenbar habe ich mich unklar ausgedrückt ;)

Also ich mache einen Export aus der Registry siehe 1.

dann möchte ich per find nur die Drucker auslesen die am alten Printserver hängen und diese dann löschen.

Das kann ich ja per for Schleife und find mit Kombination rundl32 machen...

Dann kommt das etwas herausfordernde wo vielleicht Biber oder DerWoWasWusste mir nen Tipp geben könnten...

Aus der .REG Datei per find was auslesen und die Server per vermute mal Token und Delims filtern und dann per echo in eine neue .REG exportieren?!
Mitglied: 60730
60730 Oct 01, 2012 updated at 10:54:03 (UTC)
Goto Top
Zitat von @einfachBernd:
Hi LimoSeil:

offenbar habe ich mich unklar ausgedrückt ;)
Irgendwo in den vielen anderen freds wirst du sehen, dass das schon da war.
Incl. loesungen...Beispiel oder

Aus der .REG Datei per find was auslesen und die Server per vermute mal Token und Delims filtern und dann per echo in eine neue .REG exportieren?!


?!?

Zitat von @60730:
Moin,

back-to-topDas macht man nicht....


So ein drucker wird ausgelesen, geloescht und dann unter neuem namen richtig eingebunden.

Da steckt viel mehr dahinter als tricksen in der reg in einem zweig vom langen baum

habe wieder einmal eine Bastelanfrage bekommen.
und weil "Bastelanfrage" bedeutet- bastelt mal für mich/meinen Kunden unde nicht - ich such mal selber und weil Nomen est Omen einfach immer einfacher ist mach ichs auf einfach face-sad

Gruß
Member: einfachBernd
einfachBernd Oct 02, 2012, updated at Oct 03, 2012 at 16:01:14 (UTC)
Goto Top
Harr, habe eine Lösung gefunden die für meine Zwecke optimal reicht


echo off
cls

echo # System Settings
Setlocal EnableDelayedExpansion
rem ### ALTE Printserver: Druckserver, des00041degpri1
set srvprint1alt=Printserver
set srvprint1neu=###1###
set srvprint2alt=des00041degpri1
set srvprint2neu=###2###
set storage=%~dp0
md "%storage%EXPORT-Files" >nul 2>nul
set "export=%storage%EXPORT-Files"
md "%storage%IMPORT-Files" >nul 2>nul
set "import=%storage%IMPORT-Files"

echo # Drucker Export
reg export "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" "%export%\%computername%_%username%_std.reg" /Y >nul
reg export "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" "%export%\%computername%_%username%_ext.reg" /Y >nul

echo # Auswertung Drucker an Printserver:
echo # Printserver 1: %srvprint1alt%
echo # Printserver 2: %srvprint2alt%
echo.
echo # Export Drucker an Printserver
echo # Location: %export%
for /f "tokens=1,2,3,* skip=2 delims=\^=^" %%b in ('find /i "%srvprint1alt%" "%export%\%computername%_%username%_ext.reg"') do (
set "printer=%%d"
echo \\%srvprint1neu%\!printer:~,-1! >> "%import%\%computername%_%username%.txt"
)

for /f "tokens=1,2,3,* skip=2 delims=\^=^" %%b in ('find /i "%srvprint2alt%" "%export%\%computername%_%username%_ext.reg"') do (
set "printer=%%d"
echo \\%srvprint2neu%\!printer:~,-1! >> "%import%\%computername%_%username%.txt"
)