Avatar billede rossonero Nybegynder
15. november 2004 - 11:25 Der er 6 kommentarer

Simpel progammering ?

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.

Kan dette lade sig gøre ?
Avatar billede bertelbrander Novice
15. november 2004 - 23:17 #1
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.
Avatar billede rossonero Nybegynder
16. november 2004 - 10:00 #2
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

De "1000000000" det svare jo til 1gb ik ?
Avatar billede bertelbrander Novice
16. november 2004 - 19:48 #3
Jo, 1000000000 er (ca.) 1G

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.
Avatar billede rossonero Nybegynder
17. november 2004 - 11:39 #4
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.
Avatar billede bertelbrander Novice
17. november 2004 - 23:08 #5
Ups, jeg havde glemt at slette ordet echo foran net send kommandoen, det gør at den udskriver kommandoen i stedet for at udføre den.

Det skal rettes til:
if %Free% LSS 1000000000 net send <USERNAME> "Oh-no my disk is running out of space"
Avatar billede rossonero Nybegynder
18. november 2004 - 15:47 #6
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 :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester