Kan der ikke laves et "program" i en .bat fil f.eks, som kan ligge på en pc og kontrollerer diskplads. Dvs. programmet kan f.eks. køre en gang i timen og hvis der f.eks. er mindre end 100mb fri, så sender den en mail eller danner en fil af en eller anden slags.
Hvis din bat-fil skal køre på NT/2000/XP kan du bruge noget i stil med følgende:
@echo off setlocal
for /F "tokens=3" %%I in ('dir ^|findstr /C:"byte ledig"') do call :Form %%I echo Free: %Free% if %Free% LSS 1000000000 net send <USERNAME> Oh-no my disk is running out of space goto :eof
:Form for /F "tokens=1,2,3,4 delims=,." %%A in ("%1") do call :ConCat %%A %%B %%C %%D goto :eof
:ConCat set Free=%1%2%3%4
Bemærk at: 1000000000 er den grænse hvorunder der gives alarm. <USERNAME> skal er states med den bruger der skal have besked, denne vil få en popup box med beskende når der er for lidt plads. Messenger servicen skal være enabled for at det virker. Der kan muligvis opstå problemer hvis der er mere end 2G byte fri. Du kan tilføje et drev til dir kommandoen (eg. dir X:) hvis ikke det er samme drev som batfilen kører på der skal checkes. Du kan sætte "Scheduled Tasks"/"Planlagte opgaver" til at kører filen. Hvis din Windows ikke snakker dansk skal du ændre "bytes ledig" til det den skriver efter antal bytes ledig når du kører en dir, i den første for kommando.
ok - jeg kan ikke rigtig få det til at virke, dvs. jeg prøver på min egen pc her hvor der er 9.5GB fri. Du skrev at der kan opstå problemer med mere end 2gb fri, ved ikke om det har grunden
Jeg har lavet en forbedret version, der kan håndtere mere end 2G fri, den starter med at checke om der er mere end 10 cifre i tallet der angiver størrelsen, hvis der er det siger den at der er nok fri. Der kan godt laves andre løsninger hvis ikke dette er godt nok.
@echo off setlocal
for /F "tokens=3" %%I in ('dir ^|findstr /C:"byte ledig"') do call :Form %%I echo Free: %Free% rem If more than 10 digits in size -> more than 1G if not %Free:~0,9%==%Free% goto :eof if %Free% LSS 1000000000 echo net send <USERNAME> "Oh-no my disk is running out of space" goto :eof
:Form for /F "tokens=1,2,3,4 delims=,." %%A in ("%1") do call :ConCat %%A %%B %%C %%D goto :eof
:ConCat set Free=%1%2%3%4
Hvis ikke det virker, så prøv at slette "@echo off" og se hvad den skriver når du kører det.
Jeg har så lagt programmet på serveren, hvor der pt. er 600MB fri .. så den "burde" jo melde alarm.
Jeg har prøvet at fjerne echo off og der er som sådan ingen fejl at se i løbet af scriptet. Net send bliver også brugt, men der kommer dog intet. Har prøvet at lave en almindelig net send kommando i dos prompten på serveren, hvor den popper op på min skærm . men når den bliver kørt i scriptet kommer der ingen ting.
Ja der kan man bare se - det burde jeg også kunne have regnet ud, selvom jeg ikke lige er en haj til sådan nogle script.
men jo .. det virker sgu :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.