RMBB Skrevet 30. april 2013 Del Skrevet 30. april 2013 (endret) Jeg ønsker å lage en .bat fil for å sjekke innholdet i hosts filen til windows. Dette gjør jeg enkelt ved å bruke "type" Det jeg lurer på er om det er en command jeg kan bruke som skjuler linjene som starter med # ? Nå bruker jeg @echo off type %windir%\system32\drivers\etc\hosts pause I hosts filen ligger denne infoen: # Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # xxx.xx.xx.xx aaa.eks.com # source server # xx.xx.xx.xx aaa.eks.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 192.168.1.1 Eksempel Men jeg ønsker kun å få frem: 192.168.1.1 Eksempel. Jeg vil kutte ut alle linjer som begynner med # Endret 2. mai 2013 av RMBB Lenke til kommentar
RMBB Skrevet 30. april 2013 Forfatter Del Skrevet 30. april 2013 Dette er filen jeg kjører: @echo off type %windir%\system32\drivers\etc\hosts pause Da får jeg se det jeg trenger, men jeg ønsker å ekskludere alle linjene som begynner med # Skal bruke dette videre og ønsker ikke å få frem så mye unyttig tekst.. Lenke til kommentar
xRun Skrevet 30. april 2013 Del Skrevet 30. april 2013 Mulig jeg blander litt her nå, men funker det ikke med @ foran linjene som ikke skal gjengis på skjerm, når echo er off ellerno? Fins sikkert guide med eksempler på nett, men jeg er på vei ut døren. Lenke til kommentar
xRun Skrevet 30. april 2013 Del Skrevet 30. april 2013 (endret) Ref: http://itpro.no/arti...atch-scripting/ Med echo off blir selve kommandoene usynlig, men evt. feilmeldinger eller feedback fra kjørte instrukser ser ut til å bli vist. For en god løsning på sånne ting, og som også lett kan kompileres til exe-filer, kan jeg tipse om f.eks. AutoHotKey. Egen syntax, men ikke spesielt vanskelig å lære, og er freeware. Bruker den selv til litt ymse. Ta en titt. http://www.autohotkey.com/ Endret 30. april 2013 av xRun Lenke til kommentar
snippsat Skrevet 1. mai 2013 Del Skrevet 1. mai 2013 findstr /v "^#" "%windir%\system32\drivers\etc\hosts" Eller loop over innhold og hoppe over liner med #. @echo off setLocal EnableDelayedExpansion for /f "eol=# delims=" %%a in (%windir%\system32\drivers\etc\hosts) do ( set var=%%a echo !var! ) pause Lenke til kommentar
RMBB Skrevet 2. mai 2013 Forfatter Del Skrevet 2. mai 2013 (endret) Takk for svar:) xRun: Har ikke forklart meg godt nok, har oppdatert 1. post:) Har vært innom den fra itpro, men tror ikke den er grundig nok. Skal sjekke ut AutoHotKey:) SNIPPSAT: Jeg har sett "for" kommandoen, men finner ingen steder som forklarer den på en måte jeg skjønner. Når jeg kjører din viser den ikke annet enn pause. Får ingen feilmelding når jeg tar vekk @echo off Begge virker fint! Jeg som hadde tom hosts fil Hva gjør /f i kommandoen? Hvorfor må du ha med delims= Hva gjør %%A? Er "in" for å fortelle hvor filen du ønsker å "behandle" er? Endret 2. mai 2013 av RMBB Lenke til kommentar
snippsat Skrevet 2. mai 2013 Del Skrevet 2. mai 2013 (endret) Hva gjør /f i kommandoen? Splitter gitt innhold(tokens) inn i seksjoner. Hvorfor må du ha med delims= Viss delimiter settes tom,vil hele linen bli tilordnet variabelen. Hva gjør %%A? Innhold i hosts(linje for linje)blir tilordnet variabelen A. Er "in" for å fortelle hvor filen du ønsker å "behandle" er? "in" at enn vil jobbe med innhold i hosts. Dette er da noe du kan lese om i de fleste tutorials om Batch. Jeg bruker Batch lite eller ikke noe,gjør alt i andre språk da jeg ikke liker Batch overhode. Kan ta med hvordan man skriver dette i Python. with open(path_to_hosts) as file_content : for line in file_content: if not line.startswith('#'): print line Koden kan nesten forstås selv om man aldri har programmert før. Endret 2. mai 2013 av SNIPPSAT Lenke til kommentar
Paull Skrevet 2. mai 2013 Del Skrevet 2. mai 2013 Eller PowerShell: gc $env:windir\system32\drivers\etc\hosts | ?{!($_ -match "^#")} Lenke til kommentar
RMBB Skrevet 3. mai 2013 Forfatter Del Skrevet 3. mai 2013 Takk igjen for svar. Jeg har lest mange tutorials, men ingen forklarer på en måte jeg forstår. Men ble litt klokere nå. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå