[LØST] bat fil skal skrive til en fil uten filetternavn

19 innlegg i emnet

Skrevet

Hallo!

Holder på med et script som skal blokkere nettsider, og det er slik forløbig:

@echo off

echo Velkommen til Evelens WebSide sperrer.

:meny

echo Meny:

echo 1 - Bloker er nettsted

echo 2 - Gjenoprett standardinstillinger (til før du brukte dette programmet)

echo 3 - Avslutt

SET /P INPUT=

IF /I "%INPUT%"=="" goto :meny

IF /I "%INPUT%"=="1" goto :blokker

IF /I "%INPUT%"=="2" goto :angre

IF /I "%INPUT%"=="3" goto :exit



:blokker

cls

echo Skriv Nettadressen du skal blokke uten http:// eller www. (eks vg.no)

set /p webisde=

echo 127.0.0.1       %webisde% >> C\WINDOWS\system32\drivers\ect\hosts

echo 127.0.0.1       http://%webisde% >> C\WINDOWS\system32\drivers\ect\hosts

echo 127.0.0.1       http://www.%webisde% >> C\WINDOWS\system32\drivers\ect\hosts

echo 127.0.0.1       www.%webisde% >> C\WINDOWS\system32\drivers\ect\hosts

cls

echo Nettstedet er nå blokkert

pause

goto :meny


:angre

cls

echo Er du helt sikker på at du vil gjenoprette tidligere instillinger?

echo 1 - Ja

echo 2 - Nei (hovedmeny)

SET /P ANGRERDU=

IF /I "%ANGRERDU%"="" goto :angre

IF /I "%ANGRERDU%"="1" goto :angre2

IF /I "%ANGRERDU%"="2" goto :meny


:angre2

echo # Copyright (c) 1993-1999 Microsoft Corporation > C\WINDOWS\system32\drivers\ect\hosts

echo # >> C\WINDOWS\system32\drivers\ect\hosts

echo # Dette er en eksempel på en HOSTS-fil som brukes av Microsoft TCP/IP for Windows. >> C\WINDOWS\system32\drivers\ect\hosts

echo # >> C\WINDOWS\system32\drivers\ect\hosts

echo # Denne filen inneholder tilordninger av IP-adresser til vertsnavn. Alle >> C\WINDOWS\system32\drivers\ect\hosts

echo # oppføringer må være på hver sin linje. IP-adressen plasseres i den >> C\WINDOWS\system32\drivers\ect\hosts

echo # første kolonnen, etterfulgt av det tilsvarende vertsnavnet. IP-adressen >> C\WINDOWS\system32\drivers\ect\hosts

echo # og vertsnavnet må være adskilt av minst ett mellomrom. >> C\WINDOWS\system32\drivers\ect\hosts

echo # >> C\WINDOWS\system32\drivers\ect\hosts

echo # I tillegg kan kommentarer (som denne) settes inn på egne linjer, eller >> C\WINDOWS\system32\drivers\ect\hosts

echo # etter maskinnavnet, anført med et nummertegn ("#") >> C\WINDOWS\system32\drivers\ect\hosts

echo # >> C\WINDOWS\system32\drivers\ect\hosts

echo # Eksempel: >> C\WINDOWS\system32\drivers\ect\hosts

echo # >> C\WINDOWS\system32\drivers\ect\hosts

echo #      102.54.94.97     rhino.acme.com          # kildeserver >> C\WINDOWS\system32\drivers\ect\hosts

echo #       38.25.63.10     x.acme.com              # x-klientvert >> C\WINDOWS\system32\drivers\ect\hosts

echo 127.0.0.1       localhost >> C\WINDOWS\system32\drivers\ect\hosts



:exit

exit

problemet er at det ikke fungerer, "hosts" fila (uten filetternavn) blir rett og slett ikke endret, hvordan kan jeg fikse det?

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Programmet klarer ikke å skrive til en fil når det er ukjent filetternavn.

Vil tro at du må opprette hosts.txt jeg også etterpå kopiere med kommandoen "copy hosts.txt hosts"

edit: altså i programmet blir alt som skal skrives til hosts filen skrevet til hosts.txt. På slutten av kommandoen kan du legge inn kommandoen over.. men så spørs det om den klarer å kopiere til en fil som ikke har filetternavn.. du får bare prøve!

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

funket ikke serlig bra det heller.

En løsning er og bruke rename på txt fila til fila uten etternavn (hviss det går da), men da vil jo alt det andre drite forsvinne

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Tja, dersom du ønsker å skrive til f.eks. en fil som heter "fil_liste" (altså uten filetternavn). Kan det gjøres på denne måte:

dir /b > fil_liste.

I dette eksempelet skrives alle filnavnene i katalogen til filen "fil_liste".

Tar du bort punktomet blir "fil_liste" oppfattet som en katalog og ikke en fil.

Edit: Når du refererer til hosts fila må du rett og slett skrive hosts. (altså med punktom bak hosts).

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

men da blir vel hosts fila hetende "hosts."?

og det vil ikke fungere? eller...

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

bump

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

men da blir vel hosts fila hetende "hosts."?

og det vil ikke fungere? eller...

Har du prøvd? :)

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Blir nok ikke det "Dj_Evelen".

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

kan prøve

EDIT: funket ikke

@echo off

echo Velkommen til Evelens WebSide sperrer.

:meny

echo Meny:

echo 1 - Bloker er nettsted

echo 2 - Gjenoprett standardinstillinger (til før du brukte dette programmet)

echo 3 - Avslutt

SET /P INPUT=

IF /I "%INPUT%"=="" goto :meny

IF /I "%INPUT%"=="1" goto :blokker

IF /I "%INPUT%"=="2" goto :angre

IF /I "%INPUT%"=="3" goto :exit



:blokker

cls

echo Skriv Nettadressen du skal blokke uten http:// eller www. (eks vg.no)

set /p webisde=

echo 127.0.0.1       %webisde% >> C\WINDOWS\system32\drivers\ect\hosts.

echo 127.0.0.1       http://%webisde% >> C\WINDOWS\system32\drivers\ect\hosts.

echo 127.0.0.1       http://www.%webisde% >> C\WINDOWS\system32\drivers\ect\hosts.

echo 127.0.0.1       www.%webisde% >> C\WINDOWS\system32\drivers\ect\hosts.


cls

echo Nettstedet er nå blokkert

pause

goto :meny


:angre

cls

echo Er du helt sikker på at du vil gjenoprette tidligere instillinger?

echo 1 - Ja

echo 2 - Nei (hovedmeny)

SET /P ANGRERDU=

IF /I "%ANGRERDU%"="" goto :angre

IF /I "%ANGRERDU%"="1" goto :angre2

IF /I "%ANGRERDU%"="2" goto :meny


:angre2

echo # Copyright (c) 1993-1999 Microsoft Corporation > C\WINDOWS\system32\drivers\ect\hosts.

echo # >> C\WINDOWS\system32\drivers\ect\hosts.

echo # Dette er en eksempel på en HOSTS-fil som brukes av Microsoft TCP/IP for Windows. >> C\WINDOWS\system32\drivers\ect\hosts.

echo # >> C\WINDOWS\system32\drivers\ect\hosts.

echo # Denne filen inneholder tilordninger av IP-adresser til vertsnavn. Alle >> C\WINDOWS\system32\drivers\ect\hosts.

echo # oppføringer må være på hver sin linje. IP-adressen plasseres i den >> C\WINDOWS\system32\drivers\ect\hosts.

echo # første kolonnen, etterfulgt av det tilsvarende vertsnavnet. IP-adressen >> C\WINDOWS\system32\drivers\ect\hosts.

echo # og vertsnavnet må være adskilt av minst ett mellomrom. >> C\WINDOWS\system32\drivers\ect\hosts.txt

echo # >> C\WINDOWS\system32\drivers\ect\hosts.txt

echo # I tillegg kan kommentarer (som denne) settes inn på egne linjer, eller >> C\WINDOWS\system32\drivers\ect\hosts.

echo # etter maskinnavnet, anført med et nummertegn ("#") >> C\WINDOWS\system32\drivers\ect\hosts.

echo # >> C\WINDOWS\system32\drivers\ect\hosts.

echo # Eksempel: >> C\WINDOWS\system32\drivers\ect\hosts.

echo # >> C\WINDOWS\system32\drivers\ect\hosts.

echo #      102.54.94.97     rhino.acme.com          # kildeserver >> C\WINDOWS\system32\drivers\ect\hosts.

echo #       38.25.63.10     x.acme.com              # x-klientvert >> C\WINDOWS\system32\drivers\ect\hosts.

echo 127.0.0.1       localhost >> C\WINDOWS\system32\drivers\ect\hosts.


:exit

exit

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Ein liten ting: Hugs at dei som har modifisert HOSTS-fila si før dei tek i bruk dette skriptet får ei HOSTS-fil lik den ein i utgangspunktet får med Windows. Altså angrar ein ikkje endringar ein gjer med skriptet ditt, ein angrar alle endringar ein nokon gong har gjort i HOSTS-fila.

Og eg trur eg ser feilen. HOSTS-fila ligg i WINDOWS\System32\Drivers\etc\, ikkje ect. Dessutan, kva med dei som har installert Windows på ein annen stasjon enn C:? Den vil jo ikkje fungere for dei. Bruk i staden %systemroot%\system32\drivers\etc\hosts, då fungerar den uansett kva for stasjon Windows er installert på.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Ein liten ting: Hugs at dei som har modifisert HOSTS-fila si før dei tek i bruk dette skriptet får ei HOSTS-fil lik den ein i utgangspunktet får med Windows. Altså angrar ein ikkje endringar ein gjer med skriptet ditt, ein angrar alle endringar ein nokon gong har gjort i HOSTS-fila.

Og eg trur eg ser feilen. HOSTS-fila ligg i WINDOWS\System32\Drivers\etc\, ikkje ect. Dessutan, kva med dei som har installert Windows på ein annen stasjon enn C:? Den vil jo ikkje fungere for dei. Bruk i staden %systemroot%\system32\drivers\etc\hosts, då fungerar den uansett kva for stasjon Windows er installert på.

funket utmerket, men "angre" funksjonen virker fremdeles ike

@echo off

echo Velkommen til Evelens WebSide sperrer.

:meny

echo Meny:

echo 1 - Bloker er nettsted

echo 2 - Gjenoprett standardinstillinger (til før du brukte dette programmet)

echo 3 - Avslutt

SET /P INPUT=

IF /I "%INPUT%"=="" goto :meny

IF /I "%INPUT%"=="1" goto :blokker

IF /I "%INPUT%"=="2" goto :angre

IF /I "%INPUT%"=="3" goto :exit



:blokker

cls

echo Skriv Nettadressen du skal blokke uten http:// eller www. (eks vg.no)

set /p webisde=

echo 127.0.0.1       %webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1       http://%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1       http://www.%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1       www.%webisde% >> %systemroot%\system32\drivers\etc\hosts


cls

echo Nettstedet er nå blokkert

pause

goto :meny


:angre

cls

echo Er du helt sikker på at du vil gjenoprette tidligere instillinger?

echo 1 - Ja

echo 2 - Nei (hovedmeny)

SET /P ANGRERDU=

IF /I "%ANGRERDU%"="" goto :angre

IF /I "%ANGRERDU%"="1" goto :angre2

IF /I "%ANGRERDU%"="2" goto :meny


:angre2

echo # Copyright (c) 1993-1999 Microsoft Corporation > %systemroot%\system32\drivers\etc\hosts

echo # >> %systemroot%\system32\drivers\etc\hosts

echo # Dette er en eksempel på en HOSTS-fil som brukes av Microsoft TCP/IP for Windows. >> %systemroot%\system32\drivers\etc\hosts

echo # >> C\WINDOWS\system32\drivers\ect\hosts.

echo # Denne filen inneholder tilordninger av IP-adresser til vertsnavn. Alle >> %systemroot%\system32\drivers\etc\hosts

echo # oppføringer må være på hver sin linje. IP-adressen plasseres i den >> %systemroot%\system32\drivers\etc\hosts

echo # første kolonnen, etterfulgt av det tilsvarende vertsnavnet. IP-adressen >> %systemroot%\system32\drivers\etc\hosts

echo # og vertsnavnet må være adskilt av minst ett mellomrom. >> %systemroot%\system32\drivers\etc\hosts

echo # >> %systemroot%\system32\drivers\etc\hosts

echo # I tillegg kan kommentarer (som denne) settes inn på egne linjer, eller >> %systemroot%\system32\drivers\etc\hosts

echo # etter maskinnavnet, anført med et nummertegn ("#") >> %systemroot%\system32\drivers\etc\hosts

echo # >> %systemroot%\system32\drivers\etc\hosts

echo # Eksempel: >> %systemroot%\system32\drivers\etc\hosts

echo # >> %systemroot%\system32\drivers\etc\hosts

echo #      102.54.94.97     rhino.acme.com          # kildeserver >> %systemroot%\system32\drivers\etc\hosts

echo #       38.25.63.10     x.acme.com              # x-klientvert >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1       localhost >> %systemroot%\system32\drivers\etc\hosts


:exit

exit

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

bump

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

bump

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

bump

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Er det ikke bare å kopiere hosts fila før noen endringer er gjert, så bruke den som backup?

Det gjøre du på følgende måte:

Først må du velge hvor plasseringen til hosts fila skal være. Jeg kaller det bare "plassering", så får du bytte ut selv ;)

For å sikre at hosts fila ikke overskrives hver gang du starter "programmet", kan du legge til en "if exist"-kode.

if not exist "plassering" goto :copy
Så legger du ":copy" nederst i scripte, da vil det ikke skje noen misforståelser og scripte vil gå til hoved menyen. ":copy" vil se sånn her ut:
copy /y "%systemroot%\system32\drivers\etc\hosts" "plassering"
Dette blir koden for å kopiere. For å gjennoprette kan du bruke "move":
move /y "plassering" "%systemroot%\system32\drivers\etc\hosts"

"/y"-bryteren fjerner spørsmål om eventuell oversrkivning...

Jeg må si jeg er veldig imponert over scripte ditt, og om denne løsningen funker vil jeg nok benytte meg av det også ;)

Hvis du ikke skjønte helt hva jeg mente her, så er det bare å spørre, så skal jeg se om jeg kan forklare nærmere...

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

laget det nå, ikke testet det enda, får håpe det funker :)

if not exist "%systemroot%\system32\drivers\etc\hosts\backup" goto :copy

@echo off

echo Velkommen til Evelens WebSide sperrer.

:meny

echo Meny:

echo 1 - Bloker er nettsted

echo 2 - Gjenoprett standardinstillinger (til før du brukte dette programmet)

echo 3 - Avslutt

SET /P INPUT=

IF /I "%INPUT%"=="" goto :meny

IF /I "%INPUT%"=="1" goto :blokker

IF /I "%INPUT%"=="2" goto :angre

IF /I "%INPUT%"=="3" goto :exit

:blokker

cls

echo Skriv Nettadressen du skal blokke uten http:// eller www. (eks vg.no)

set /p webisde=

echo 127.0.0.1 %webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1 http://%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1 http://www.%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1 www.%webisde% >> %systemroot%\system32\drivers\etc\hosts

cls

echo Nettstedet er nå blokkert

pause

goto :meny

:angre

cls

echo Er du helt sikker på at du vil gjenoprette tidligere instillinger?

echo 1 - Ja

echo 2 - Nei (hovedmeny)

SET /P ANGRERDU=

IF /I "%ANGRERDU%"="" goto :angre

IF /I "%ANGRERDU%"="1" goto :angre2

IF /I "%ANGRERDU%"="2" goto :meny

:angre2

move /y "%systemroot%\system32\drivers\etc\hosts\backup" "%systemroot%\system32\drivers\etc\hosts"

:copy

copy /y "%systemroot%\system32\drivers\etc\hosts" "%systemroot%\system32\drivers\etc\hosts\backup"

Grenopretning fulført.

echo 1 - Meny

echo 2 - Avslutt

IF /I "%ANGRERDU%"="1" goto :meny

IF /I "%ANGRERDU%"="2" goto :exit

:exit

exit

har nå laget denne koden, hva kan feilen være?

if not exist "%systemroot%\system32\drivers\etc\hosts\backup" goto :copy

:meny1

cls

@echo off

echo Velkommen til Evelens WebSide sperrer.

:meny

echo Meny:

echo 1 - Bloker er nettsted

echo 2 - Gjenoprett standardinstillinger (til før du brukte dette programmet)

echo 3 - Avslutt

SET /P INPUT=

IF /I "%INPUT%"=="" goto :meny

IF /I "%INPUT%"=="1" goto :blokker

IF /I "%INPUT%"=="2" goto :angre

IF /I "%INPUT%"=="3" goto :exit



:blokker

cls

echo Skriv Nettadressen du skal blokke uten http:// eller www. (eks vg.no)

set /p webisde=

echo 127.0.0.1	   %webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1	   http://%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1	   http://www.%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1	   www.%webisde% >> %systemroot%\system32\drivers\etc\hosts


cls

echo Nettstedet er nå blokkert

pause

goto :meny


:angre

cls

echo Er du helt sikker på at du vil gjenoprette tidligere instillinger?

echo 1 - Ja

echo 2 - Nei (hovedmeny)

SET /P ANGRERDU=

IF /I "%ANGRERDU%"="" goto :angre

IF /I "%ANGRERDU%"="1" goto :angre2

IF /I "%ANGRERDU%"="2" goto :meny


:angre2

move /y "%systemroot%\system32\drivers\etc\hosts\backup" "%systemroot%\system32\drivers\etc\hosts"



:copy

copy /y "%systemroot%\system32\drivers\etc\hosts" "%systemroot%\system32\drivers\etc\hosts\backup"

cls

goto :meny1



:exit

exit

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Denne er testet og virker :)

@echo off

if not exist "%systemroot%\system32\drivers\hosts." goto :copy

@echo off

echo Velkommen til Evelens WebSide sperrer.

:meny

echo Meny:

echo 1 - Bloker et nettsted

echo 2 - Gjenoprett standardinstillinger (til før du brukte dette programmet)

echo 3 - Avslutt

SET /P INPUT=

IF /I "%INPUT%"=="" goto :meny

IF /I "%INPUT%"=="1" goto :blokker

IF /I "%INPUT%"=="2" goto :angre

IF /I "%INPUT%"=="3" goto :exit

:blokker

cls

echo Skriv Nettadressen du skal blokke uten http:// eller www. (eks vg.no)

set /p webisde=

echo 127.0.0.1 %webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1 http://%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1 http://www.%webisde% >> %systemroot%\system32\drivers\etc\hosts

echo 127.0.0.1 www.%webisde% >> %systemroot%\system32\drivers\etc\hosts

cls

echo Nettstedet er nå blokkert

pause

goto :meny

:angre

cls

echo Er du helt sikker på at du vil gjenoprette tidligere instillinger?

echo 1 - Ja

echo 2 - Nei (hovedmeny)

SET /P ANGRERDU=

IF /I "%ANGRERDU%"=="" goto :angre

IF /I "%ANGRERDU%"=="1" goto :angre2

IF /I "%ANGRERDU%"=="2" goto :meny

:angre2

move /y "%systemroot%\system32\drivers\hosts." "%systemroot%\system32\drivers\etc\hosts."

:copy

copy /y "%systemroot%\system32\drivers\etc\hosts" "%systemroot%\system32\drivers\hosts."

goto :meny

:exit

exit

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Så ut som S_Tone_meg fikk den til å virke. Men hvis den ikke gjør det, hva er feilen du får? Og kanskje det ikke er så smart å legge backupen i system32? Dette kan enkelte antivirus reagere på....

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

funket det,

takk for all hjelp!!! :D

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

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 konto

Logg inn

Har du allerede en konto? Logg inn her.


Logg inn nå

  • Hvem er aktive   0 medlemmer

    Ingen innloggede medlemmer aktive