Batch - Beschneiden von TXT-Inhalt und FOR-Schleifen mit mehreren Ausgaben
Hallo zusammen,
nachdem ich nun bereits seit Tagen vor einem Problem sitze und auch durch googlen nicht weiter komme, wende ich mich jetzt hoffnungsvoll an euch.
Und zwar arbeiten wir derzeit an einem Windows 7 Rollout.
Meine Aufgabe ist es aktuell, die Migration der eingerichteten (Netzwerk-)Drucker vorzubereiten.
Die Vorgehensweise ist soweit klar: Exportiere Registry Schlüssel, filtere die Netzwerkdrucker heraus und importiere diese auf das neue System.
REG EXPORT "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" C:\test\Drucker.reg
Mit diesem Befehl, oder alternativ einem reg query kommt man sehr leicht an eine *.reg, bzw. *.txt Datei mit allen installierten Druckern.
Exemplarisch hier meine drucker.reg:
ich möchte jetzt gerne per Batch die beiden Netzwerkdrucker inkl. Druckerserver (immer gleich) herausfiltern.
SOLL:
\\ccbpsrv54\\Canon_C5045_PS_EG
\\ccbpsrv54\\Canon_C5035_PS_2OG
Mit folgender Batch realisiere ich derzeit die "Beschneidung" der Datei:
Es ist nicht sehr schön, tut aber (eigentlich) das, was es soll.
Mein Problem ist jetzt, dass das Programm IMMER nur den letzten Drucker in der Liste speichert und den dafür aber mehrfach.
IST:
\\ccbpsrv54\\Canon_C5035_PS_2OG
\\ccbpsrv54\\Canon_C5035_PS_2OG
Woran liegt das? Ich werde daraus einfach nicht schlau...
Ich hoffe, Ihr könnt mir helfen.
Über Alternativen freue ich mich natürlich auch!
Vielen Dank für eure Mühe!
Liebe Grüße,
Florian
nachdem ich nun bereits seit Tagen vor einem Problem sitze und auch durch googlen nicht weiter komme, wende ich mich jetzt hoffnungsvoll an euch.
Und zwar arbeiten wir derzeit an einem Windows 7 Rollout.
Meine Aufgabe ist es aktuell, die Migration der eingerichteten (Netzwerk-)Drucker vorzubereiten.
Die Vorgehensweise ist soweit klar: Exportiere Registry Schlüssel, filtere die Netzwerkdrucker heraus und importiere diese auf das neue System.
REG EXPORT "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" C:\test\Drucker.reg
Mit diesem Befehl, oder alternativ einem reg query kommt man sehr leicht an eine *.reg, bzw. *.txt Datei mit allen installierten Druckern.
Exemplarisch hier meine drucker.reg:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices]
"Microsoft XPS Document Writer"="winspool,Ne00:"
"FreePDF - klein"="winspool,Ne01:"
"FreePDF"="winspool,Ne02:"
"Fax"="winspool,Ne03:"
"\\\\ccbpsrv54\\Canon_C5045_PS_EG"="winspool,Ne05:"
"\\\\ccbpsrv54\\Canon_C5035_PS_2OG"="winspool,Ne04:"
ich möchte jetzt gerne per Batch die beiden Netzwerkdrucker inkl. Druckerserver (immer gleich) herausfiltern.
SOLL:
\\ccbpsrv54\\Canon_C5045_PS_EG
\\ccbpsrv54\\Canon_C5035_PS_2OG
Mit folgender Batch realisiere ich derzeit die "Beschneidung" der Datei:
@echo off
for /f "Tokens=*" %%i in ('find /I "canon" c:\test\nb163.txt^') do (
set VAR=%%i
SET _result=%VAR:*c=c%
ECHO %_result%
SET _result2=%_result:~0,-18%
ECHO %_result2% >>c:\test\DruckerToMigrate.txt
)
echo Netzwerkdrucker erfolgreich gesichert!
pause
Es ist nicht sehr schön, tut aber (eigentlich) das, was es soll.
Mein Problem ist jetzt, dass das Programm IMMER nur den letzten Drucker in der Liste speichert und den dafür aber mehrfach.
IST:
\\ccbpsrv54\\Canon_C5035_PS_2OG
\\ccbpsrv54\\Canon_C5035_PS_2OG
Woran liegt das? Ich werde daraus einfach nicht schlau...
Ich hoffe, Ihr könnt mir helfen.
Über Alternativen freue ich mich natürlich auch!
Vielen Dank für eure Mühe!
Liebe Grüße,
Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 189862
Url: https://administrator.de/forum/batch-beschneiden-von-txt-inhalt-und-for-schleifen-mit-mehreren-ausgaben-189862.html
Ausgedruckt am: 22.04.2025 um 14:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo hojnacki und willkommen im Forum!
Ich würde das anders anlegen:
Wenn Du auch gleich die Anzahl der Backslashes halbieren willst:
Gefiltert wird hier nach UNC-Pfad - kannst Du aber natürlich auch nach "canon" machen ...
Grüße
bastla
P.S.: Wenn Du Code oder Textbeispiele postest, verwende bitte (geht auch nachträglich) die passende Formatierung ...
[Edit] Danke für das Nachholen
(und im Zweifelsfall auch Ein- und Ausgabe so formatieren - damit werden sie leichter nachvollzieh- und für Tests verwendbar) [/Edit]
Ich würde das anders anlegen:
for /f "delims==" %%i in ('findstr "\\\\" c:\test\nb163.txt') do >>c:\test\DruckerToMigrate.txt echo %%~i
@echo off & setlocal
for /f "delims==" %%i in ('findstr "\\\\" c:\test\nb163.txt') do (
set "Drucker=%%~i"
setlocal enabledelayedexpansion
>>Drucker.txt echo !Drucker:\\=\!
endlocal
)
Grüße
bastla
P.S.: Wenn Du Code oder Textbeispiele postest, verwende bitte (geht auch nachträglich) die passende Formatierung ...
[Edit] Danke für das Nachholen