Skagen Skrevet 17. november 2006 Del Skrevet 17. november 2006 (endret) Ja, det er fordi CHOICE ikke lengre er en gyldig kommando i CMD/Windows XP slik jeg sa tidligere, slik at den vil bare hoppe over det. Men man kan laste ned choice.exe som er inkludert i Win2K Resource Kit: Yes, but problem is, choice.exe is not included with NT, it is however part of NT4 resource kit. in any case if u dont have the resource kit you can download choice.exe from here http://www.dynawell.com/support/ResKit/winnt.asp and this site has some examples on how to use it: http://www.tburke.net/info/reskittools/topics/choice.htm and please, i dont want anyone whining piracy! beacuse i posted a link to download a tool in the nt4 resource kit. Edit: Du kan også prøve dette: pulp makes a good point. If you don't want to include choice.exe, you could use the new SET /P argument like so: :START set /P foovar=Answer Y or N: if {foovar}=={Y} goto :Y if {foovar}=={N} goto :N echo You didn't do it right, let's try again. goto :START :Y echo You answered Y! rem other stuff here goto :eof :N echo You answered N! rem other stuff here goto :eof The SET /P argument is available on Win2k and XP, but not on older systems. Kilde. Endret 17. november 2006 av skag1 Lenke til kommentar
Gjest Slettet+142 Skrevet 17. november 2006 Del Skrevet 17. november 2006 CHOICE /CABCD Hvilken stasjon vil du formatere? IF ERRORLEVEL 1 GOTO :A IF ERRORLEVEL 2 GOTO :B IF ERRORLEVEL 3 GOTO :C IF ERRORLEVEL 4 GOTO 7305636[/snapback] vel, siden dette da er en bruker-guide.. hva vil "IF ERRORLEVEL 1" si? Lenke til kommentar
Skagen Skrevet 17. november 2006 Del Skrevet 17. november 2006 Hvert alternativ vil gi ifra seg en errorlevel-verdi. Ved å sjekke hvilken errorlevel-verdi som er blitt satt, kan man finne ut hvilket alternativ brukeren valgte, og utføre nye handlinger ut ifra disse (f.eks GOTO :B). Men har nå funnet en annen, kanskje mer elegant måte å gjøre valg på! Jeg kaller demonstrasjonsprogrammet mitt for multi-defrag tool, hvor man kan sette opp en liste av opp til 9 disker som defragmenteres i tur og orden. Man kan bruke parametre for å spesifisere direkte hvilke disker som skal defragmenteres, samt rekkefølgen, eller bare skrive MDEFRAG for å få en guidet modus med GUI og greier Har også hjelp-parametre, slik som f.eks "-h", "-?", "/h" og "/?". Siden denne batchen ble på 323 linjer (!), som i stor grad skyldes GUI'et i guidet modus, velger jeg å vise koden i spoiler. @ECHO OFF CLS SET OPT1= SET OPT2= SET OPT3= SET OPT4= SET OPT5= SET OPT6= SET OPT7= SET OPT8= SET OPT9= IF "%1"=="" GOTO :SETOPT1 IF "%1"=="/?" GOTO :HELP IF /I "%1"=="/h" GOTO :HELP IF "%1"=="-?" GOTO :HELP IF /I "%1"=="-h" GOTO :HELP IF NOT "%1"=="" SET OPT1=%1 IF NOT "%2"=="" SET OPT2=%2 IF NOT "%3"=="" SET OPT3=%3 IF NOT "%4"=="" SET OPT4=%4 IF NOT "%5"=="" SET OPT5=%5 IF NOT "%6"=="" SET OPT6=%6 IF NOT "%7"=="" SET OPT7=%7 IF NOT "%8"=="" SET OPT8=%8 IF NOT "%9"=="" SET OPT9=%9 GOTO :DEFRAG1 :HELP ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO If no input is specified, you will be prompted with a guided mode for ECHO selecting which disk(s) to defrag in sequense. ECHO. ECHO You can also specify drive letters seperated by space directly, ECHO as shown with this example: ECHO. ECHO Example of defragmenting drive C:, E: and G: in sequense: ECHO. ECHO MDEFRAG C E G ECHO. ECHO. GOTO :END :SETOPT1 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: None ECHO. ECHO. SET /P OPT1=Specify first drive in defrag sequense by letter only: IF /I "%OPT1%"=="X" GOTO :CANCEL IF "%OPT1%"=="" GOTO :NODEFRAG GOTO :SETOPT2 :SETOPT2 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO. ECHO. SET /P OPT2=Specify second drive in defrag sequense by letter only: IF /I "%OPT2%"=="X" GOTO :CANCEL IF "%OPT2%"=="" GOTO :DEFRAG1 GOTO :SETOPT3 :SETOPT3 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO Disk 2: %OPT2%:/ ECHO. ECHO. SET /P OPT3=Specify third drive in defrag sequense by letter only: IF /I "%OPT3%"=="X" GOTO :CANCEL IF "%OPT3%"=="" GOTO :DEFRAG1 GOTO :SETOPT4 :SETOPT4 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO Disk 2: %OPT2%:/ ECHO Disk 3: %OPT3%:/ ECHO. ECHO. SET /P OPT4=Specify forth drive in defrag sequense by letter only: IF /I "%OPT4%"=="X" GOTO :CANCEL IF "%OPT4%"=="" GOTO :DEFRAG1 GOTO :SETOPT5 :SETOPT5 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO Disk 2: %OPT2%:/ ECHO Disk 3: %OPT3%:/ ECHO Disk 4: %OPT4%:/ ECHO. ECHO. SET /P OPT5=Specify fifth drive in defrag sequense by letter only: IF /I "%OPT5%"=="X" GOTO :CANCEL IF "%OPT5%"=="" GOTO :DEFRAG1 GOTO :SETOPT6 :SETOPT6 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO Disk 2: %OPT2%:/ ECHO Disk 3: %OPT3%:/ ECHO Disk 4: %OPT4%:/ ECHO Disk 5: %OPT5%:/ ECHO. ECHO. SET /P OPT6=Specify sixth drive in defrag sequense by letter only: IF /I "%OPT6%"=="X" GOTO :CANCEL IF "%OPT6%"=="" GOTO :DEFRAG1 GOTO :SETOPT7 :SETOPT7 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO Disk 2: %OPT2%:/ ECHO Disk 3: %OPT3%:/ ECHO Disk 4: %OPT4%:/ ECHO Disk 5: %OPT5%:/ ECHO Disk 6: %OPT6%:/ ECHO. ECHO. SET /P OPT7=Specify seventh drive in defrag sequense by letter only: IF /I "%OPT7%"=="X" GOTO :CANCEL IF "%OPT7%"=="" GOTO :DEFRAG1 GOTO :SETOPT8 :SETOPT8 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO Disk 2: %OPT2%:/ ECHO Disk 3: %OPT3%:/ ECHO Disk 4: %OPT4%:/ ECHO Disk 5: %OPT5%:/ ECHO Disk 6: %OPT6%:/ ECHO Disk 7: %OPT7%:/ ECHO. ECHO. SET /P OPT8=Specify eighth drive in defrag sequense by letter only: IF /I "%OPT8%"=="X" GOTO :CANCEL IF "%OPT8%"=="" GOTO :DEFRAG1 GOTO :SETOPT9 :SETOPT9 CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Inputting X = Cancel/return to console. ECHO Pressing enter with blank/no input = execute/start defrag sequense. ECHO. ECHO Current defrag sequense: ECHO. ECHO Disk 1: %OPT1%:/ ECHO Disk 2: %OPT2%:/ ECHO Disk 3: %OPT3%:/ ECHO Disk 4: %OPT4%:/ ECHO Disk 5: %OPT5%:/ ECHO Disk 6: %OPT6%:/ ECHO Disk 7: %OPT7%:/ ECHO Disk 8: %OPT8%:/ ECHO. ECHO. SET /P OPT9=Specify last (nineth) drive in defrag sequense by letter only: IF /I "%OPT9%"=="X" GOTO :CANCEL GOTO :DEFRAG1 :DEFRAG1 IF "%OPT1%"=="" GOTO :NODEFRAG ECHO DEFRAG %OPT1%: GOTO :DEFRAG2 :DEFRAG2 IF "%OPT2%"=="" GOTO :END ECHO DEFRAG %OPT2%: GOTO :DEFRAG3 :DEFRAG3 IF "%OPT3%"=="" GOTO :END ECHO DEFRAG %OPT3%: GOTO :DEFRAG4 :DEFRAG4 IF "%OPT4%"=="" GOTO :END ECHO DEFRAG %OPT4%: GOTO :DEFRAG5 :DEFRAG5 IF "%OPT5%"=="" GOTO :END ECHO DEFRAG %OPT5%: GOTO :DEFRAG6 :DEFRAG6 IF "%OPT6%"=="" GOTO :END ECHO DEFRAG %OPT6%: GOTO :DEFRAG7 :DEFRAG7 IF "%OPT7%"=="" GOTO :END ECHO DEFRAG %OPT7%: GOTO :DEFRAG8 :DEFRAG8 IF "%OPT8%"=="" GOTO :END ECHO DEFRAG %OPT8%: GOTO :DEFRAG9 :DEFRAG9 IF "%OPT9%"=="" GOTO :END ECHO DEFRAG %OPT9%: GOTO :END :CANCEL CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Operation aborted: Canceled by user. ECHO. ECHO. GOTO :END :NODEFRAG CLS ECHO. ECHO MDEFRAG - Multi-Defrag tool by skag1 ECHO _____________________________________________________________________ ECHO. ECHO. ECHO Error: No drive letter(s) specified: No disk(s) to defrag. ECHO. ECHO. GOTO :END :END Kopier/lim inn i MDEFRAG.BAT dersom dere vil teste eller bruke programmet. MERK: Batchen vil ikke utføre noen handliger, men istedet vise (ECHO) hvilken handling den ville ha foretatt. Om noen vil at batchen faktisk skal gjøre de handlingene den viser, er det bare å fjerne ECHO før hver DEFRAG-kommando. Lenke til kommentar
Jaffe Skrevet 17. november 2006 Del Skrevet 17. november 2006 Sånn litt off-topic; det scriptet der kunne vært laget mye lettere og mer effektivt med f.eks. skriptspråket Python som er mye mer avansert enn batch, og også et ordentlig programmeringsspråk. Ikke for å rakke ned på scriptene her, men man gjør ofte ting alt for undøvendig tungvinte med batch :/ Lenke til kommentar
LooneyTune Skrevet 17. november 2006 Forfatter Del Skrevet 17. november 2006 Python er mye vanskligere å lære, men mye mer effektivt. Med batch er det dessverre omvendt Jeg personlig liker Basic, og skal nå snart begynne å lære meg c++... Men nå må vi ikke komme off-topic Lenke til kommentar
Jaffe Skrevet 17. november 2006 Del Skrevet 17. november 2006 Python er mye vanskligere å lære, men mye mer effektivt. Med batch er det dessverre omvendt Jeg personlig liker Basic, og skal nå snart begynne å lære meg c++...Men nå må vi ikke komme off-topic 7306851[/snapback] Det grunnleggende i Python (på samme nivå som i batch) er omtrent like lett å lære. I tillegg har Python maaaange ganger flere muligheter -- og når man først kan grunnspråket, kan man lære seg mange nye ting. Lenke til kommentar
Thor. Skrevet 17. november 2006 Del Skrevet 17. november 2006 Var ikke dette en batch-tråd? Hold dere ontopic. Ett sted må vi nybegynnere starte. Lenke til kommentar
Skagen Skrevet 18. november 2006 Del Skrevet 18. november 2006 (endret) Sånn litt off-topic; det scriptet der kunne vært laget mye lettere og mer effektivt med f.eks. skriptspråket Python som er mye mer avansert enn batch, og også et ordentlig programmeringsspråk. Ikke for å rakke ned på scriptene her, men man gjør ofte ting alt for undøvendig tungvinte med batch :/ 7306679[/snapback] Du har misforstått. Batch har aldri vært et programmeringsspråk, eller noe som helst i nærheten. Opprinnelig ble det utviklet for å kunne scripte de grunnleggende kommandoene i MS-DOS, slik at man kunne f.eks automatisere repeterende oppgaver, istedetfor å sitte å skrive disse manuelt i DOS. Å sammenligne batch med Python blir som å sammenligne spiker med spyd. Endret 18. november 2006 av skag1 Lenke til kommentar
LooneyTune Skrevet 18. november 2006 Forfatter Del Skrevet 18. november 2006 skag1 har et poeng her, batch er jo ikke programmering Lenke til kommentar
Jaffe Skrevet 18. november 2006 Del Skrevet 18. november 2006 Sånn litt off-topic; det scriptet der kunne vært laget mye lettere og mer effektivt med f.eks. skriptspråket Python som er mye mer avansert enn batch, og også et ordentlig programmeringsspråk. Ikke for å rakke ned på scriptene her, men man gjør ofte ting alt for undøvendig tungvinte med batch :/ 7306679[/snapback] Du har misforstått. Batch har aldri vært et programmeringsspråk, eller noe som helst i nærheten. Opprinnelig ble det utviklet for å kunne scripte de grunnleggende kommandoene i MS-DOS, slik at man kunne f.eks automatisere repeterende oppgaver, istedetfor å sitte å skrive disse manuelt i DOS. Å sammenligne batch med Python blir som å sammenligne spiker med spyd. 7308184[/snapback] Og akkurat hvor fikk du det for deg at jeg kaller batch for et programmeringsspråk? Det eneste jeg sa, var at scriptet ditt var unødvendig repeterende og langt, og kunne vært gjort raskere i f.eks. Python. Lenke til kommentar
Skagen Skrevet 18. november 2006 Del Skrevet 18. november 2006 Av det faktum at du sammenligner Python, som du kaller for et ordentlig programmeringsspråk, med batch. Med mindre du anser batch som programmeringsspråk, har jeg vansker med å forstå hvordan, og på hvilket grunnlag, du kan sammenligne disse. Batch vil alltid være MS-DOS på autopilot. Da sier det seg selv at man ikke får de samme mulighetene som med et ordentlig programmeringsspråk. Lenke til kommentar
swj Skrevet 22. november 2006 Del Skrevet 22. november 2006 Om det er lettere å skrive dette i det ene språket eller det andre er likegyldig for min del. Det er morsomt å prøve noe nytt, og i dag lærte jeg noe jeg ikke kunne fra før. Takk for guiden Lenke til kommentar
pal.carlsen Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 (endret) Hei. En nyttig sak for meg er et skript som starter opp en hel haug med services på pcen min som jeg normalt ikke trenger. Årsak. Har installert BizTalk 2006, SQLServer 2005 osv lokalt på maskinen. Normalt jobber jeg på virtuelle images når jeg utvikler, men av og til har jeg bruk for å kunne fyre opp en løsning lokalt og derfor har jeg også installert de på laptopen min. Uansett, for de som ikke har prøvd å installere BizTalk lokalt så kan jeg røpe at det drar "litt" ressurser" og ikke minst, er avhengig av en bråte andre prosesser som også må kjøre for å fungere. Resultatet er at pcen min bruker skrekkelig lang tid på boot, og allikevel er det ikke sikkert at alt kommer opp den først har bootet. Løsningen er å sette alle normalt unødvendig Services sin Startup type til "Manual" og ganske enkelt kjøre et bat skript som starter alle disse servicene når jeg skal bruke de. Det vil jeg si er en fornuftig bruk av denne typen funksjonalitet. Svært nyttig for meg iallefall. @Echo offcls echo Starter SQL Server 2005 net start MSSQLSERVER echo Starter SQL Serveragent net start sqlserveragent echo Starter SQL Server Integration Services net start MsDtsServer echo Starter Enterprise Single Sign-On net start ENTSSO Echo Starter BizTalk Base EDI service net start EDI Subsystem echo Starter BizTalk net start BTSSVC$BizTalkServerApplication echo Starter BizTalk RulesEngine net start RulesEngine Update Service pause Edit: He he scriptet var feil Endret 12. desember 2006 av PålPot Lenke til kommentar
Thor. Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 Går det an å få ping til og returnere "pc ... er online/offline" med ping? ping -n 1 PC-013.elev.gjermundnes.vgs.no Kan noen gi meg et eksempel? Lenke til kommentar
Skagen Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 (endret) @ECHO OFF CLS IF "%1"=="" GOTO :ERR PING -n 1 -w 500 %1 IF ERRORLEVEL 1 GOTO :OFFLINE ECHO. ECHO. ECHO %1 is online and responding to ICMP Ping. ECHO. GOTO :EXIT :OFFLINE ECHO. ECHO. ECHO %1 appears to be offline or not responding to ICMP Ping. ECHO. GOTO :EXIT :ERR CLS ECHO. ECHO. ECHO Error: No target IP adress specified. ECHO. :EXIT Dersom du ikke vil ha detaljene fra PING (f.eks pingtider, etc) er det bare å putte inn en CLS (Clear Screen) kommando etter IF ERRORLEVEL-setningen og etter :OFFLINE-setningen, slik som under :ERR. Hvis du vil ha en fast adresse å teste om du får svar fra kan du bytte ut %1 med adressen og fjerne den første IF-setningen som sjekker om det er oppgitt noen adresser, ellers må du oppgi adresse når du kjører batchfila. F.eks: pingchk 192.168.1.1 Merk at -w (timeout) er satt til 500 ms (0.5 sekund). Endret 12. desember 2006 av skag1 Lenke til kommentar
Thor. Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 Den fungerte delvis men jeg skulle sjekke mange ip er, Det scriptet kunne gjort var å returnere ip og pcnavn og om den var online i et tekstdokument. Lenke til kommentar
Skagen Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 Vel, du forteller jo ikke akkurat veldig mye om hva du trenger da. Er vanskelig å gjette seg til at du skulle pinge mange maskiner og føre en liste over disse når du ikke nevner noe som helst om det. Å få listet opp PC-navn er ikke mulig via CMD etter hva jeg vet. Men det er fult mulig å lage en slik batch som sjekker om mange PC'er svarer og fører liste over disse, både som kommando med opp til 9 adresser oppgitt ved syntaksparametre eller faste adresser i selve batchen. Lenke til kommentar
Thor. Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 Hmm. Tenkte å pinge alle skolemaskinene en gang hver for å finne ut hvilke som var online. Blir så mye rot å lese seg igjennom statestikken på hver enkelt. Beklager at jeg gav lite info i første posten men friminuttet var plutselig slutt =/ Lenke til kommentar
Skagen Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 (endret) Noe sånt trenger addisjonsoperasjoner med variabler, noe jeg er usikker på går an med batch, selv om jeg tviler. Et annet stort problem er at dersom du skal IP-scanne store mengder IP'er vil det ta tid med ping, siden den vil vente på svar inntil timeout før den forsøker å kontakte en ny IP. Til slikt er ulumske (hacker) scannere kanskje bedre fordi disse kan gjøre addisjonsoperasjoner for å slippe å plotte inn 127^4 antall IP-adresser i koden, samt at slike programmer kan vente på flere maskiner samtidig. f.eks, å skanne samtlige IP-adresser som er mulig med IPv4 og ha 100 ms timeout (0.1 sekund - eller 10 IP'er i sekundet om du vil), vil det ta 301 dager dersom jeg ikke har regnet feil. Endret 12. desember 2006 av skag1 Lenke til kommentar
Thor. Skrevet 12. desember 2006 Del Skrevet 12. desember 2006 Hmm. Jeg har allerede prøvd de programmene jeg kjenner til som scanner etter ip er men jeg får ikke lagt inn WinpcCAP fordi jeg mangler adminrettighetene (Ja jeg er elev). Jeg har opptil 255 ip er å gå igjennom. På nettverket er det maks 100 maskiner online så vidt jeg vet. 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å