Andy123: CMD - Aus Datei löschen

Hi,

Folgendes Beispiel einer Batchdatei:

@echo off
echo. >> %SYSTEMROOT%\system32\drivers\etc\hosts
echo 192.168.1.1 router >> %SYSTEMROOT%\system32\drivers\etc\hosts

Ich möchte diesen Eintrag jetzt mit einem CMD-Befehl wieder rauslöschen.
Es kann sein, dass durch mehrfaches Klicken mehrere Einträge in der Datei stehen. Alle sollen raus.

Wie geht das?

Danke im Vorraus,
Andy

  1. Moin!

    Die Unix-Tools für Windows und das darin enthaltene Programm grep, das ist ein Filterprogramm, helfen Dir weiter.

    (Die Dateien aus UnxUtils.zip einfach nach %WINDIR% entpacken.)

    cd %WINDIR%\system32\drivers\etc\ rename hosts hosts.toGrep
    grep -v 192.168.1.1 hosts.toGrep > hosts
    delete hosts.toGrep

    Durch die Umleitung würdest Du eine leere Datei erhalten, wenn Du direkt hineinzuschreiben versuchst. Deshalb die Umbenennung.

    grep kann auch mit regulären Ausdrücken umgehen.

    Soll nur die Zeile mit dem Punkt weg:
    grep -v ^.$ hosts > hosts.grep

    Sind es mehrere IP- Adressen:
    schreibe diese in eine Datei: toDelete.txt:

    192.168.1.1
    192.168.1.2
    192.168.1.31
    10.10.0.1

    grep -vf toDelete.txt hosts > hosts.grep

    Du kannst Dich testweise vom Ergebnis überzeugen:

    grep -v 192.168.1.1 hosts | wc -l

    (Das Programm wc ist auch dabei- es kann Zeilen, "Wörter", Zeichen und Bytes zählen.)

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Hi,

      und das geht nur mit einem Unix-Tool für Windows?

      Gruß,
      Andy

      1. gudn tach!

        und das geht nur mit einem Unix-Tool für Windows?

        nee, das geht auch mit reinen windows-tools.

        aber zunaechst was grundsaetzliches: da es sich bei dir eigentlich um ein grosses vorhaben (das bearbeiten der etc/hosts) dreht, waere es geschickter, wenn du in einem thread bleiben wuerdest.

        ich werde dort antworten:
        https://forum.selfhtml.org/?t=164610&m=1073095

        prost
        seth

      2. Moin!

        und das geht nur mit einem Unix-Tool für Windows?

        Gute Güte!

        Dieser Weg ist einer von unzähligen. Du kannst Dir auch eine fast beliebige Programmiersprache (sowohl: Kompiler (Beispiele: C++, C, C#) , Interpreter (Beispiele: BASIC, Perl, PHP...), und Mischformen (Beispiel: Java) installieren und dann ein Progrämmchen schreiben. Du kannst Deine host-Datei auch in eine Datenbank importieren (z.B. MySQL), mit SQL-Befehlen das tun, was Du vor hast, und dann wieder exportieren... und und und ...

        Im Verhältnis dazu sind die Unix-Tools aber ein ziemlich geringer Aufwand. Und verdammt schnell. Zudem geben diese Dir die Möglichkeit wunderbare Dinge mit begrenztem Installations- und Lernaufwand zu erledigen. Vielleicht machen Sie Dir ja auch Lust auf ein GNU/Linux oder BSD.

        Und sie kosten Dich nichts.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        1. gudn tach!

          und das geht nur mit einem Unix-Tool für Windows?

          Gute Güte!

          Dieser Weg ist einer von unzähligen. Du kannst Dir auch eine fast beliebige Programmiersprache [...] installieren und dann ein Progrämmchen schreiben.

          der OP moechte afais mit hausmitteln auskommen und gar nicht erst _irgendwas_ installieren muessen. in diesem fall ist wie gezeigt auch durchaus moeglich und sinnvoll.

          prost
          seth

    2. gudn tach!

      Die Unix-Tools für Windows und das darin enthaltene Programm grep, das ist ein Filterprogramm, helfen Dir weiter.

      nee, besser http://gnuwin32.sourceforge.net/ oder cygwin.

      cd %WINDIR%\system32\drivers\etc\ rename hosts hosts.toGrep
      grep -v 192.168.1.1 hosts.toGrep > hosts
      delete hosts.toGrep

      Durch die Umleitung würdest Du eine leere Datei erhalten, wenn Du direkt hineinzuschreiben versuchst. Deshalb die Umbenennung.

      fuer inplace-ersetzungen kann man auch sed oder perl verwenden.

      prost
      seth