Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch-Datei zur Erzeugung von Textdateien (basierend auf einer Ausgangsdatei) je nach Inhalt des Verzeichnisses, for-Schleifen-Problem

Frage Entwicklung Batch & Shell

Mitglied: Sonnenblume87

Sonnenblume87 (Level 1) - Jetzt verbinden

03.06.2009, aktualisiert 16:46 Uhr, 4578 Aufrufe, 12 Kommentare

Hallo zusammen,

da ich hier schon ein paar hilfreiche Tipps gefunden habe, die mich der Lösung meines Problems näher gebracht haben, hoffe ich, dass mir jemand von euch auch noch bei dem Rest helfen kann.

Ich schreibe an einer Batch-Datei, mit deren Hilfe Verbindungsdateien für lokale Datenbanken (Firebird) je nach Inhalt des Datenbankordners erstellt werden sollen.
Als Vorlage hierfür dient eine vorhandene Verbindungsdatei im txt-Format.

Die Batchdatei sieht folgenden Ablauf vor:
Zunächst wird eine txt-Datei (datenbanken.txt) erstellt, welche die Dateinamen aus dem Datenbank-Ordner auflistet. Danach wird die Ausgangs-Verbindungsdatei kopiert und in eine txt umgewandelt und umbenannt (neuedsn.txt). Nun soll für jede Zeile in datenbanken.txt ein bestimmter Eintrag in neuedsn.txt gesucht und durch die Zeile aus der datenbanken.txt ersetzt werden. Das ganze wird dann in eine neue Datei gespeichert, wieder in eine Verbindungsdatei umgewandelt und zurückkopiert (in den Ordner mit den Verbindungsdateien).

Soweit so gut, allerdings wirft mir meine Batch-Datei in der Konsole einen Syntaxfehler aus. Ich bin mir relativ sicher, dass es an der ersten for-Schleife (für die Abarbeitung der einzelnen Zeilen in der datenbanken.txt) liegt. Den Suchen-und-Ersetzen Teil habe ich so aus dem Netz kopiert und der funktionierte einzeln (aber ohne die Variable %%f in ausgabe und ersetzungszeichen) wunderbar.

Hier mein Quelltext:

01.
@echo off 
02.
 
03.
rem Löschen der alten DB-Liste 
04.
del d:\sw\datenbanken.txt 
05.
 
06.
rem Erstellen der neuen DB-Liste 
07.
for /f "delims=" %%i in ('dir d:\sw\db\*.gdb /b') do @echo %%~ni >> d:\sw\datenbanken.txt 
08.
 
09.
rem Kopieren der Lokal-dsn nach d:\sw 
10.
xcopy /q /y "C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\lokal_D.dsn" d:\sw\ 
11.
 
12.
rem Umbenennen der dsn in txt 
13.
ren d:\sw\lokal_D.dsn neuedsn.txt 
14.
 
15.
rem Erstellen der neuen dsn-Files 
16.
for /f "delims=" %%f in (d:\sw\datenbanken.txt) do ( 
17.
	 
18.
	REM Ersetzen des DBNamen in der dsn 
19.
	SETLOCAL enabledelayedexpansion 
20.
 
21.
	SET "datei=d:\sw\neuedsn.txt" 
22.
	SET "ausgabe=d:\sw\%%f.txt" 
23.
	SET "suchzeichen=sw.gdb" 
24.
	SET "ersetzungszeichen=%%f.gdb" 
25.
	 
26.
	REM Datei zeilenweise auslesen  
27.
	REM und in Variable "zeile" schreiben 
28.
	FOR /f "delims=" %%j IN ('FINDSTR . "%datei%"') DO ( 
29.
	SET zeile=%%j& CALL :ersetzen !zeile! 
30.
31.
	GOTO :eof 
32.
 
33.
	:ersetzen 
34.
	REM Das Suchzeichen mit dem Ersetzungsteichen tauschen 
35.
	SET zeile=!zeile:%suchzeichen%=%ersetzungszeichen%! 
36.
 
37.
	REM Ergebnis in die Ausgabedatei schreiben 
38.
	ECHO !zeile!>>%ausgabe% 
39.
	GOTO :eof 
40.
 
41.
	:eof 
42.
	 
43.
	rem Umbenennen der txt in dsn 
44.
	ren d:\sw\%%f.txt %%f.dsn 
45.
 
46.
	rem kopieren der neuen dsn 
47.
	xcopy /q /y d:\sw\%%f.dsn "C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\"  
48.
 
49.
	rem löschen des dsn-files unter d: 
50.
	del d:\sw\%%f.dsn 
51.
 
52.
53.
 
54.
rem löschen der neuedsn.txt 
55.
del d:\sw\neuedsn.txt
In einem weiteren Schritt sollte noch der Inhalt der vorherige datenbanken.txt (also vor dem löschen) mit C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\ abgeglichen werden und Dateien, die mit den EIntragungen in der txt übereinstimmen gelöscht werden.
Ich würde mich sehr freuen, wenn ihr hierbei auch helfen könntet.

Liebe Grüße,
Christiane
Mitglied: LotPings
03.06.2009 um 19:12 Uhr
Hallo Chistiane,

willkommen im Forum.

Du hast scheinbar einige Codeschnipsel die als SUB realisiert waren einfach in deine Schleife kopiert, das geht so nicht.
Die goto :Eof innerhalb der Schleife lassen die ganze Batchdatei abbrechen und die Label innerhalb der Schleifen funktionieren auch nicht.

Ich muss gerade den Platz wechseln, melde mich nochmal wenn kein anderer schneller ist

Gruß
LotPings
Bitte warten ..
Mitglied: LotPings
03.06.2009 um 20:02 Uhr
Hallo nochmal,

nach einiger Trockenübungs-Gehirnakrobatik bin ich zu dem Schluß gekommen
das die ganze hin und her Kopiererei eigentlich entfallen könnte.

Diese 2 gestaffelten For Schleifen sollten eigentlich den Zweck erfüllen.
Ob die Datenbank.txt überhaupt nötig ist weiß ich nicht, sie wird in einem Rutsch mit
neu erstellt.

01.
@echo off 
02.
SetLocal EnableDelayedExpansion 
03.
rem globale Variablen 
04.
SET "Vorlage=C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\lokal_D.dsn" 
05.
SET "ZielPfad=C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\" 
06.
SET "suchzeichen=sw.gdb" 
07.
 
08.
rem Löschen der alten DB-Liste 
09.
del d:\sw\datenbanken.txt 
10.
 
11.
rem Erstellen der neuen DB-Liste 
12.
FOR /f "delims=" %%i in ('dir d:\sw\db\*.gdb /B /ON /A-D') do ( 
13.
  >>"d:\sw\datenbanken.txt" echo/%%~ni 
14.
  Type NUL>"%ZielPfad%%%~ni.dsn" 
15.
  FOR /f "delims=" %%j IN ('Type "%Vorlage%" ') DO ( 
16.
    Set "Zeile=%%~j" 
17.
    >>"%ZielPfad%%%~ni.dsn" Echo/!Zeile:%suchzeichen%=%%~nxi! 
18.
19.
)
Gruß
LotPings

Edit zuviel gekürzt der Setlocal fehlte
Edit2: Ein %-Zeichen fehlte in Zeile 17
Edit3: Alte dsn muss gelöscht werden
Bitte warten ..
Mitglied: Sonnenblume87
04.06.2009 um 09:05 Uhr
Hi LotPings,

erstmal Danke für die Antwort. Ich habe deine Batch-Datei ausprobiert und sie erzeugt zwar die .dsn-Files allerdings nicht richtig.

Die Vorlage dsn sieht so aus:
01.
[ODBC] 
02.
DRIVER=Firebird/InterBase(r) driver 
03.
UID=USER 
04.
DIALECT=1 
05.
CHARSET=ISO8859_1 
06.
Dbname=d:\sw\db\sw.gdb


Die Zieldatei sollte also nach dem Suchen und Ersetzen z.B. so aussehen:
01.
[ODBC] 
02.
DRIVER=Firebird/InterBase(r) driver 
03.
UID=USER 
04.
DIALECT=1 
05.
CHARSET=ISO8859_1 
06.
Dbname=d:\sw\db\anderedb.gdb


Deine Batch macht aber das:
01.
Zeile:sw.gdb=anderedb.gdb 
02.
Zeile:sw.gdb=anderedb.gdb 
03.
Zeile:sw.gdb=anderedb.gdb 
04.
Zeile:sw.gdb=anderedb.gdb 
05.
Zeile:sw.gdb=anderedb.gdb 
06.
Zeile:sw.gdb=anderedb.gdb
???

Kannst du mir da nochmal weiterhelfen?
Wäre super wenn du mir dann den Quellcode innerhalb der Schleifen auch nochmal genauer erklären könntest.

Danke und Gruß,
Christiane
Bitte warten ..
Mitglied: LotPings
04.06.2009 um 11:33 Uhr
Zitat von Sonnenblume87:
Kannst du mir da nochmal weiterhelfen?
Die Ersetzung funktionierte nicht mit DelayedExpansion, habe hier ein Ersatzkonstrukt, damit gehts.
01.
@echo off 
02.
rem globale Variablen 
03.
SET "SucheZ=sw.gdb" 
04.
SET "Vorlage=C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\lokal_D.dsn" 
05.
SET "ZielPfad=C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\" 
06.
Set DBMaske=D:\sw\db\*.gdb 
07.
Set DBListe=D:\sw\datenbanken.txt 
08.
FOR /f "delims=" %%A IN ('Type "%DBListe%" ') Do Del /Q "%ZielPfad%%%A.dsn" >NUL 2>&1 
09.
rem Löschen der alten DB-Liste 
10.
del %DBListe% 
11.
 
12.
rem Erstellen der neuen DB-Liste 
13.
FOR /f "delims=" %%i in ('dir %DBMaske% /B /ON /A-D') do ( 
14.
  >>"%DBListe%" echo/%%~ni 
15.
  Type NUL>"%ZielPfad%%%~ni.dsn" 
16.
  FOR /f "delims=" %%j IN ('Type "%Vorlage%" ') DO ( 
17.
    Set "Zeile=%%~j" 
18.
    >>"%ZielPfad%%%~ni.dsn" Call Echo/%%Zeile:%SucheZ%=%%~nxi%% 
19.
20.
)
Wäre super wenn du mir dann den Quellcode innerhalb der Schleifen auch nochmal genauer erklären könntest.

  • Die Äußere Schleife von Zeile 13 bis 20 listet die Datenbanken in %%i auf,
  • Z14 fügt sie der datenbanken.txt hinzu.
  • Z15 löscht den Inhalt der jeweiligen alten dsn oder erstellt sie neu.
  • Die innere For Schleife von Z16 bis Z19 liest die Vorlage Zeile für Zeile in %%j
  • Da die Ersetzung nicht direkt in einer Schleifenvariable stattfinden kann kopiert Z17 %%j in %Zeile%
  • Z18 hängt die bearbeitet Zeile an die neue .dsn an. Damit keine Leerzeichen am Ende der Zeile mitgeschriebene werden steht der Append vorne. Der Pseudo Call sorgt dafür das im ersten Schritt die Suchen/Ersetzen Werte aufgelöst werden und erst im zweiten Schritt die verdoppelten Prozentzeichen um die Variable Zeile.

Gruß
LotPings

Edit: Zeile 8 eingefügt, löscht alle dsn zu Datenbanken.txt
Bitte warten ..
Mitglied: Sonnenblume87
04.06.2009 um 12:23 Uhr
LotPings, du bist jetzt mein persönlicher Held.
Das funktioniert super.
Ich habe bisher nur kleinere Batch-Dateien zum Hin-und Herkopieren und Aufrufen von Programmen geschrieben, hätte nicht gedacht, dass das diesmal sowas komplexes ist...
Vielen lieben Dank.

Meinst du bei dem zweiten Schritt kannst du auch noch helfen? Bzw. lässt sich das überhaupt so realisieren?

"In einem weiteren Schritt sollte noch der Inhalt der vorherige datenbanken.txt (also vor dem löschen) mit C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\ abgeglichen werden und Dateien, die mit den EIntragungen in der txt übereinstimmen gelöscht werden."

Es geht hierbei darum, dass in dem Ordner enige dsn-Files mehr liegen, die die Verbindungsdaten zu verschiedenen Datenbanken auf Servern enthalten und diese nicht gelöscht werden dürfen. Durch das neue Batch kommen ja nun immer wieder neue Verbindungen für lokale Datenbanken dazu bzw. werden ersetzt. Ein manuelles Aufräumen wäre möglich, ist jedoch nicht unbedingt für jeden User einfach, da er nicht zwingend die Namen aller nicht u löschenden Verbindungen auswendig kennt.
Es ist davon auszugehen, dass der User im Idealfall jedesmal, wenn er sich eine lokale Datenbank erstellt/kopiert/o.ä. die .bat ausführt, also sollten bis dahin in der datenbanken.txt noch der alte Inhalt stehen (tut er ja auch) und dementsprechend sollten alles Datenbankverbindungen, die mit den Namen in der .txt übereinstimmen zuerst gelöscht werden.
Existiert keine datenbank.txt mehr, weil der User sie per Hand entfernt hat = shit happens, heißt die handvoll Datenbankverbindungen, die dann nutzlos rumliegen, sind egal. ;)

Grüße,
Christiane
Bitte warten ..
Mitglied: LotPings
04.06.2009 um 13:58 Uhr
Zitat von Sonnenblume87:
>LotPings, du bist jetzt mein persönlicher Held. face-wink
Nein nein, für Helden-Kostüme bin ich zu alt

Meinst du bei dem zweiten Schritt kannst du auch noch helfen? Bzw. lässt sich das überhaupt so realisieren?
Ich habe oben Zeile 8 eingefügt, die sollte das erledigen.

"In einem weiteren Schritt sollte noch der Inhalt der vorherige datenbanken.txt (also vor dem löschen) mit
C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\
abgeglichen werden und Dateien, die mit den EIntragungen in der txt übereinstimmen gelöscht werden."
Es geht hierbei darum, dass in dem Ordner enige dsn-Files mehr liegen, die die Verbindungsdaten zu verschiedenen Datenbanken auf Servern enthalten und diese nicht gelöscht werden dürfen.
Ok aber dann brauchst du doch nur eine Batch die alle dsn mit lokalen Datenbanken durchorgelt und prüft ob diese noch existieren.

Es ist davon auszugehen, dass der User im Idealfall jedesmal, wenn er sich eine lokale Datenbank erstellt/kopiert/o.ä. die .bat ausführt, also sollten bis dahin in der datenbanken.txt noch der alte Inhalt stehen (tut er ja auch) und dementsprechend sollten alles Datenbankverbindungen, die mit den Namen in der .txt übereinstimmen zuerst gelöscht werden.
Existiert keine datenbank.txt mehr, weil der User sie per Hand entfernt hat = shit happens, heißt die handvoll Datenbankverbindungen, die dann nutzlos rumliegen, sind egal. ;)
Muss ja nicht sein, die beschriebene Prüfung ist ja nicht schwer, zu klären ist welche Pfade lokal möglich sind.
Muss mal wiederden Rechner wechseln, poste dann noch mal.

Gruß
LotPings
Bitte warten ..
Mitglied: LotPings
04.06.2009 um 16:44 Uhr
Als Ergänzung eine Batch Datei die Anhand der in den dsn Dateien enthaltenen Datenbanknamen deren Vorhandensein überprüft.

Eine Einschränkung gibt es, der Findstr Befehl zickt etwas wenn ein Suchbegriff in der letzten Zeile steht und diese nicht mit einem Return abgeschlossen ist.

01.
:: DelOldDsn.cmd ::::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off 
03.
SET "Vorlage=C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\lokal_D.dsn" 
04.
SET "ZielPfad=C:\Programme\Gemeinsame Dateien\ODBC\Data Sources\" 
05.
Set "DBPfad=D:\sw\db\" 
06.
 
07.
Pushd "%ZielPfad%" 
08.
For /F "tokens=1-2* delims=:=" %%A in ( 
09.
'Findstr /I /L "Dbname=%DBPfad%\" "*.dsn"^|Find /I /V "lokal_d.dsn" ' 
10.
) do if Not Exist "%%C" Echo Die Datenbank %%C existiert nicht,&Del /P "%%A" 
11.
POPD
Noch etwas: wenn der Suchbegriff im Findstr Befehl mit einem Backslash endet, muss ein zweiter Backslash hinzugefügt werden, sonst wird der eine als Escape für das schließende Anführungszeichen betrachtet - das wirft dann Syntaxfehler auf.

Gruß
LotPings

Edit: Wie gewünscht ein paar Erläuterungen.
  • Kern der Batch ist der Findstr in Z09, er durchsucht alle dsn Dateien nach dbname=d:\sw\db\ und gibt Fundstellen in dieser Form aus:
Dateiname.dsn:dbname=D:\sw\db\Dateiname.gdb
  • diese Ausgabe wird durch durch die | Pipe weitergeleitet an den anschließenden Find /I /V "lokal_d.dsn" der die Vorlagendatei rausfiltert damit sie nicht versehentlich gelöscht wird. Das ^ vor dem Pipe Zeichen ist notwendig damit die Pipe nicht schon beim dekodieren der Zeile sondern erst beim Ausführen der For Schleife wirkt.
  • In Z08 delims=:= trennt die obige Ausgabe am ersten Doppelpunkt sowie am Gleichheitszeichen auf und tokens=1-2* bewirkt das der erste Teil in die Variable %%A, der zweite in %%B und der komplette Rest in %%C kommt.
%%A %%B %%C
Dateiname.dsn dbname D:\sw\db\Dateiname.gdb
  • Z10 ist dann eigentlich selbsterklärend. Das & hängt einen weiteren Befehl ohne neue Zeile an.

Gruß
LotPings
Bitte warten ..
Mitglied: Sonnenblume87
05.06.2009 um 09:04 Uhr
Hi,

also die Ergänzung mit dem Löschen funktioniert auch wieder super. Ist genau das, so wie es werden sollte.
Die zweite Batch-Datei ist ne nette Idee aber leider nicht praktikabel, da in dem Data Sources Ordner auch viele dsn-Files liegen zu denen es keine lokale DB gibt, da es Server-DBs sind. Das würde also zuviel löschen.

Aber wie gesagt, die erste Batch-Dateil reicht mir vollkommen aus.
Nochmal vielen lieben Dank für die schnelle und nette Hilfe.
Bitte warten ..
Mitglied: LotPings
05.06.2009 um 09:23 Uhr
Zitat von Sonnenblume87:
also die Ergänzung mit dem Löschen funktioniert auch wieder super. Ist genau das, so wie es werden sollte.
Schön.

Die zweite Batch-Datei ist ne nette Idee aber leider nicht praktikabel, da in dem Data Sources Ordner auch viele dsn-Files liegen zu denen es keine lokale DB gibt, da es Server-DBs sind. Das würde also zuviel löschen.

Keine Angst, diese Batchdatei nimmt nur dsn die einen Eintrag haben der mit "dbname=D:\sw\db\" beginnt.
Ausserdem wird angezeigt was gelöscht würde und erst nach einer Bestätigung tatsächlich gelöscht.
Insofern kannst du das gefahrlos ausprobieren.

Gruß
LotPings
Bitte warten ..
Mitglied: Sonnenblume87
05.06.2009 um 10:17 Uhr
Zitat von LotPings:
Keine Angst, diese Batchdatei nimmt nur dsn die einen Eintrag haben
der mit "dbname=D:\sw\db\" beginnt.
Ausserdem wird angezeigt was gelöscht würde und erst nach
einer Bestätigung tatsächlich gelöscht.
Insofern kannst du das gefahrlos ausprobieren.


Achso. Ok, dann werde ich das auch mal ausprobieren. Danke.
Bitte warten ..
Mitglied: Sonnenblume87
05.06.2009 um 11:43 Uhr
Hi nochmal,

@LotPings habe die 2te. Batch jetzt ausprobiert. Das ist ja noch besser als das löschen basierend auf der datenbanken.txt
Ich werde wohl also Zeile 8 aus der ersten .bat wieder rauswerfen.

Aber magst du mir die 2te Datei nochmal erläutern?
Die meisten Begriffe und die Nutzung der Sonderzeichen sagen mir bisher gar nichts und ehe ich mir jetzt jede help durchlese bzw. mir die Sachen ergoogle, wäre eine programmbezogene Erklärung dann doch besser.

Grüße,
Christiane
Bitte warten ..
Mitglied: LotPings
05.06.2009 um 14:25 Uhr
Zitat von Sonnenblume87:
Aber magst du mir die 2te Datei nochmal erläutern?
Die meisten Begriffe und die Nutzung der Sonderzeichen sagen mir bisher gar nichts und ehe ich mir jetzt jede help durchlese bzw. mir die Sachen ergoogle,
Aber genau dadurch lernt man selbst am Besten.

wäre eine programmbezogene Erklärung dann doch besser.
Siehe oben.

Gruß
LotPings
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...