4pr28u
Goto Top

Hosts Datei per batch bearbeiten?

Ich bin totaler Anfänger in Batch und weiß nicht weiter...

Ich arbeite gerade an einem Projekt, bei dem ich ständig die hosts datei von Windows bearbeiten muss.
Jetzt habe ich mir gedacht, dass es leichter wäre, wenn ich die zwei Zeilen, die da dazu kommen bzw auskommentiert werden müssen (gelöscht werden müssen) per batch Datei ändere.

Die Einträge stehen am Ende der hosts Datei. es handelt sich um zwei Zeilen.

Kann man diese per batch Datei einfügen/löschen bzw. auskommentieren/kommentar entfernen?

Content-ID: 167445

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

Ausgedruckt am: 12.11.2024 um 21:11 Uhr

Pjordorf
Pjordorf 03.06.2011 um 18:52:13 Uhr
Goto Top
Hallo "Ich bin totaler. . .",

Zitat von @4PR28U:
Kann man diese per batch Datei einfügen/löschen bzw. auskommentieren/kommentar entfernen?
Kurz und knapp. Ja. (Suche hier im Forum wird dich erfreuen)

Oder du erstellst dir 2 Hosts Dateien (Hosts.1 und Hosts.2) und kopierst welche du benötigst nach Hosts.

Gruß,
Peter
Friemler
Friemler 03.06.2011 um 19:39:06 Uhr
Goto Top
Hallo 4PR28U,

versuche mal das hier:
@echo off

setlocal


set "FirstLine=xxx"  
set "SecondLine=xxx"  


set "HostsFile=%SystemRoot%\System32\Drivers\etc\hosts"  


if /i "%~1" equ "A" goto :Append  
if /i "%~1" equ "E" goto :Erase  
if /i "%~1" equ "C" goto :Comment  
if /i "%~1" equ "D" goto :DeComment  

exit /b



:Append
>>"%HostsFile%" (<NUL set /p "=%FirstLine%" & echo.)  
>>"%HostsFile%" (<NUL set /p "=%SecondLine%" & echo.)  
exit /b


:Erase
call :GetNLines
set /a nLines-=2

type NUL > "%HostsFile%.new"  

for /f "eol= tokens=1* delims=:" %%k in ('findstr /n "^" "%HostsFile%"') do (  
  if %%k leq %nLines% (
    >>"%HostsFile%.new" echo\%%l  
  )
)

goto :RenameFile


:Comment
call :GetNLines
set /a nLines-=2

type NUL > "%HostsFile%.new"  

for /f "eol= tokens=1* delims=:" %%k in ('findstr /n "^" "%HostsFile%"') do (  
  if %%k leq %nLines% (
    >>"%HostsFile%.new" echo\%%l  
  ) else (
    >>"%HostsFile%.new" echo\#%%l  
  )
)

goto :RenameFile


:DeComment
call :GetNLines
set /a nLines-=2

type NUL > "%HostsFile%.new"  

for /f "eol= tokens=1* delims=:" %%k in ('findstr /n "^" "%HostsFile%"') do (  
  if %%k leq %nLines% (
    >>"%HostsFile%.new" echo\%%l  
  ) else (
    for /f "eol= delims=#" %%a in ("%%l") do (  
      >>"%HostsFile%.new" echo\%%a  
    )
  )
)


:RenameFile
move /y "%HostsFile%.new" "%HostsFile%" > NUL  
exit /b



:GetNLines
for /f "delims=:" %%n in ('findstr /n "^" "%HostsFile%"') do set /a nLines=%%n  
exit /b

Zeile 6 und 7 natürlich anpassen. Dann das Script z.B. als EditHosts.cmd speichern.

Aufruf:
EditHosts A
Hängt die Zeilen an.

EditHosts C
Schreibt die Raute (#) als Kommentarzeichen vor die letzten beiden Zeilen.

EditHosts D
Entfernt die Raute vor den letzten beiden Zeilen.

EditHosts E
Löscht die letzten beiden Zeilen.


Die Änderungen werden erstmal in die Datei hosts.new geschrieben. Zum Schluss wenn alles fertig ist, wird die Datei mit dem MOVE-Befehl in Zeile 78 umbenannt in hosts.

Ich hoffe, ich habe es richtig verstanden, dass der Inhalt der beiden Zeilen immer gleich sein soll.


@Pjordorf: Sicher, wenn man schon scripten kann und in der Lage ist, bestehenden Code umzubauen, kann man erstmal die Suche bemühen. Anfänger sollte man doch etwas mehr unterstützen als mit diesem lapidaren Verweis. Sonst braucht's kein Forum.

Gruß
Friemler
4PR28U
4PR28U 03.06.2011 um 19:41:39 Uhr
Goto Top
Danke für die Mühe face-smile
Inzwischen hatte ich mir den Rat von Pjodorf zu Herzen genommen und mit einer zusätzlichen Datei und findstr das ganze umgesetzt.. ziemlich unschön aber es geht.. ich teste jetzt aber mal deins face-smile


Klappt wunderbar face-smile Dankeschön! (Vorallem ohne lästige abfragen, ob ich die Datei überschreiben will usw ^^)
60730
60730 03.06.2011 um 20:55:35 Uhr
Goto Top
moin..

"eigentlich" fangen wir Fragen nicht mit "ich arbeite" oder so was an, sondern mit einem Grußwort.
(kommt irgendwie besser, wenn man wenigstens den Anschein von Höflichkeitsflokeln bewahrt)
Zitat von @4PR28U:
Ich arbeite gerade an einem Projekt, bei dem ich ständig die hosts datei von Windows bearbeiten muss.
Ich bin totaler Anfänger in Batch und weiß nicht weiter...

Nur der vollständigkeit halber,

  • Fummeln an der Hosts Datei ist zu 99% unnötig, es geht bis auf 1% auch "richtig"
  • Und deshalb braucht derjenige, welcher wo am Fummeln am Horst ist auch Adminrechte.

  • Und eigentlich geben wir immer lieber Tipps, wie man es richtig macht.
Friemler
Friemler 03.06.2011 um 22:26:36 Uhr
Goto Top
Moin T-Mo

Zitat von @60730:
  • Und deshalb braucht derjenige, welcher wo am Fummeln am Horst ist auch Adminrechte.
Da er schon länger daran rumfummelt, weiß er das schon oder hat es noch nicht gemerkt, weil er sowieso mit Adminrechten arbeitet. Sollte das ein Projekt sein, was später mal auf einem Rechner laufen soll, wo das nicht so ist, holt er sich 'ne blutige Nase und hat was gelernt.

Zitat von @60730:
  • Und eigentlich geben wir immer lieber Tipps, wie man es richtig macht.
Es gibt vielfältige Gründe an der hosts rumzuspielen, nicht alle dieser Gründe will man unbedingt einer breiten Öffentlichkeit darlegen... Wenn mir ein Anliegen nicht allzu schwachsinnig vorkommt, handele ich lieber nach der Prämisse: Brauchst Du? Kriegst Du! Was soll ich mir den Kopf anderer Leute zerbrechen? Scripten ist mein Tai Ginseng face-wink .

Gruß
Friemler
4PR28U
4PR28U 03.06.2011 um 22:42:59 Uhr
Goto Top
:D dann entschuldige ich mich erstmal für mein unanständiges benehmen und sage einfach jetzt: Hallo ;)

Ich fummele mit, für diese Dateien vergebenen Adminrechten am Horst rum, weil das der einfachste mir bekannte Weg für das ist, was ich da mach.
Aber über eine Anregung, was du mit richtig machen meinst, würde ich mich natürlich auch freuen... einen besseren weg gibt es immer und ich lass mich gern belehren!

lg
brammer
brammer 03.06.2011 um 22:49:38 Uhr
Goto Top
Hallo,

Aber über eine Anregung, was du mit richtig machen meinst, würde ich mich natürlich auch freuen... einen besseren weg gibt es immer und ich lass mich gern belehren!

Dann erkläre doch erst mal wieso du an der Host Datei rumfummeln musst.

brammer
4PR28U
4PR28U 03.06.2011 um 22:55:23 Uhr
Goto Top
Ich habe eine FlashAnwendung, die ich nach Belieben auf meinen Lokalhost umleiten will.
Diese Batch-Dateien in Verbindung mit der cmd-Datei verwende ich jetzt als an und aus schalter, jenachdem, was ich grade benötige (Lokal/Web)
Ralph4
Ralph4 04.06.2011 um 08:36:48 Uhr
Goto Top
Hallo 4PR28U,

folgender Denkansatz.
2 Dateien die von der Stuktur deinen zwei Host dateien entsprechen und durch kopieren an die entsprechende Stelle gebracht werden.

lg Ralph
4PR28U
4PR28U 04.06.2011 um 09:27:52 Uhr
Goto Top
Hallo Ralph4,
umgesetzt hatte ich das ganze jetzt schon mit Hilfe der Host Datei. Hier ging es jetzt um einen eventuell eleganteren Lösungsweg ohne die Hosts Datei.

lg