Windows-Batch-hinzufügen eines Datensatzes zu der hosts-Datei
Ich brauche eine batch-Datei um einen Datensatz hinzuzufügen, um hosts-Datei in windows, allerdings brauche ich nicht nur eine Datei Anhängen, zu schreiben, weil ich möchte, um zu überprüfen, ob dieser Datensatz bereits vorhanden ist. Ist es moeglich?
Und wo dein code nicht funktioniert?
Schön. Ich weiß nur nicht, wie um zu überprüfen, ob ein Datensatz bereits vorhanden ist.
Schön. Ich weiß nur nicht, wie um zu überprüfen, ob ein Datensatz bereits vorhanden ist.
InformationsquelleAutor Tobia | 2013-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen.Sie müssen administrator-Berechtigungen auf hinzufügen, etwas in der hosts-Datei
Eine IP-Adresse kann eine falsche übereinstimmung. Dies ist nicht zuverlässig. Ein Datensatz kann auch TAB-Zeichen, die das vergleichen komplizierter.
ahhmm...ja...denke für die version mit
FINDSTR
Tobia wenn Sie möchten, fügen Sie eine leere Zeile, die Sie verwenden können:
echo\>>"%SystemRoot%\system32\drivers\etc\hosts&&echo my_record>>"%SystemRoot%\system32\drivers\etc\hosts""
.Nehmen Sie im Geist die foxidrive erwähnen, und verwenden Sie die ganze Zeile um einen Datensatz zu findenDiese Antwort funktioniert leider nicht unter Windows 8.1, scheint, dass es einige Zugriff verweigert problem.... vielleicht sollten wir als erstes ändern Datei Berechtigungen?
InformationsquelleAutor npocmaka
hmmm schwierige Sache.
Erste, was ich sagen möchte ist, vergessen Sie versuchen das mit einer batch-Datei.
Batch-Dateien, allein die Kraft fehlt, etwas zu tun wie diese, sofern verwendet, mit externen tools.
Während es sicherlich möglich, es sei denn, Sie wissen genau, was die Kommandozeilen-tools zu installieren, müssen Sie und wie werden Sie am Ende endlos Experimentieren, um zu finden, eine gute Kombination.
Wenn Sie wollen, diesen Weg zu gehen aber dann würde ich vorschlagen, dass Sie einen Blick auf die GnuWin32-Projekt auf sourceforge, wo Sie haben portiert, alle standard-unix-Befehlszeilen-tools auf windows, und die Sed, Grep, Awk und viele mehr, die sind perfekt für das, was Sie zu tun versuchen.
Ich würde jedoch empfehlen, dass man sich mit Powershell, oder noch besser, wenn Sie irgendwelchen haben .NET Erfahrung ein Kommandozeilen-tool in C#.
Kann ich nicht aus der Spitze von meinem Kopf denken Sie an ein powershell-Beispiel, aber man kann es in C# so etwas wie:
Bitte beachten Sie, dass nicht ein vollständiges Beispiel, und ich habe sicherlich keine Zeit gehabt, um zu testen, kompilieren Sie es, aber in der Theorie, was Sie tun müssen, ist (Unabhängig von der Sprache, die Sie wählen):
1) Laden Sie alle Zeilen der Datei in ein array
2) überprüfen Sie jede Zeile im array prüfen, um zu sehen, ob es gleich die Zeile, die Sie hinzufügen möchten
3), Wenn es nicht bereits vorhanden ist, in das array, fügen Sie die neue Zeile an das array
4) Schreibe alle Zeilen im array wieder auf die Festplatte komplett überschreiben der alten Datei.
Einige Dinge zu beachten, über mein Beispiel:
1) ich habe hart codiert alles, was, die Sie wollen, zu passieren, in einigen Parametern (Leider habe ich keine Zeit im moment, um geben eine voll funktionsfähige Probe)
2) Ändern der host-Datei MUSS mit admin-Privilegien, daher müssen Sie entweder führen Sie das Programm über eine Verknüpfung markiert als admin ausführen, oder Sie benötigen, um Ihr .NET-Projekt kompiliert und ausgeführt werden, wie ein admin Programm, indem Sie einige zusätzlichen code, um es zu verwenden, wird die UAC-Funktionen in windows. (Die erste Methode ist die Schnellste und einfachste)
Hoffentlich aber meine Notizen hier soll Ihnen den Einstieg in die richtige Richtung.
Wenn ich später Zeit (und ich erinnere mich....) Ich werde wieder kommen und sehen, ob ich die Dinge ein bisschen mehr.
InformationsquelleAutor shawty
Vorschlag basiert auf dem code von npocmaka:
Löst dies nicht das Problem von der falschen IP-match.
InformationsquelleAutor Endoro