Innehållsförteckning:

Introduktion till VB Script: a Beginners Guide: Del 2: Arbeta med filer: 13 steg
Introduktion till VB Script: a Beginners Guide: Del 2: Arbeta med filer: 13 steg

Video: Introduktion till VB Script: a Beginners Guide: Del 2: Arbeta med filer: 13 steg

Video: Introduktion till VB Script: a Beginners Guide: Del 2: Arbeta med filer: 13 steg
Video: Полный курс React Query за час | TanStack Query v4 для начинающих 2024, November
Anonim
Introduktion till VB Script: a Beginners Guide: Del 2: Arbeta med filer
Introduktion till VB Script: a Beginners Guide: Del 2: Arbeta med filer

I min senaste VBScript -instruktion gick jag igenom hur man gör ett manus för att stänga av internet för att spela Xbox360. Idag har jag ett annat problem. Min dator har stängts av slumpmässigt och jag vill logga varje gång datorn startas om till en fil. Jag har en känsla av att problemet är grafikkortet men jag vill vara säker. Jag lämnar datorn på hela tiden men kan inte övervaka den 24/7, så min enklaste lösning är att skriva en tidsstämpel till en fil varje gång den startas om. Eftersom det ger mig en BSOD varje gång blir det svårt att logga när det stängs av så jag måste få det när det startar igen. Det är den enkla biten. På grund av att detta bara är tillfälligt tills jag kommer på vad som är fel med datorn kommer jag inte att skriva till registret eller göra det till en tjänst så att det startar vid uppstart. Och för att få den att starta om varje gång den stängs av måste jag redigera bios.

Steg 1: Redigera Bios för att få det att starta om vid strömavbrott

Redigera Bios för att få det att starta om vid strömavbrott
Redigera Bios för att få det att starta om vid strömavbrott

Jag är inte säker på om mitt problem är att strömförsörjningen går sönder eller med mitt grafikkort eller vad det är. Men jag vet att datorn startar om så ofta. Så för att se till att den startar om efter ett strömavbrott (IE: strömförsörjningen brunt ut) vill jag redigera bios. På grund av det faktum att det finns så många olika bios -tillverkare där ute, skulle det vara för svårt att lista alla olika sätt att göra detta på alla de olika bios -skärmarna så jag ska bara ge dig grunderna och låta dig ta reda på detaljerna på egen hand. För att komma in i din bios måste du trycka på en knapp vid start. Vanligtvis kommer det att säga något som "hit Del för att gå in i setup" eller "F2". Olika tillverkare ger dig olika sätt men det är vanligtvis antingen "F2" eller "Del" -tangenten. I vilket fall som helst, titta efter den och tryck på tangenten den säger att du ska slå. Nu kommer du till en skärm som vanligtvis är antingen grå eller blå, men igen beror det på ditt bios -märke. Du kommer att leta efter ett alternativ för ströminställningar. Det kommer antingen att vara på ett helt eget fönster som i AMIBIOS skärmdump (lånat från toms hardware guide) eller i vissa kan det vara i ett avancerat bios -fönster. Hur som helst letar du efter en inställning för "återställning vid växelström/strömförlust". Det kan heta något annat men det kommer att vara nära det. Leta bara efter det. Det kommer vanligtvis att ha tre alternativ (sista tillståndet, på efter strömavbrott, avstängt efter strömavbrott). Du vill sätta på den efter strömavbrott. Se till att du sparar dina inställningar och avslutar bios. Nu när strömmen går sönder eller du kopplar ur datorn kommer den att starta om så snart den får ström igen. Yeahhhhhh !!!!!!!!!!!!!!!!

Steg 2: Skriva manuset Del 1: Gör en plan

Skriva manuset Del 1: Gör en plan
Skriva manuset Del 1: Gör en plan
Skriva manuset Del 1: Gör en plan
Skriva manuset Del 1: Gör en plan
Skriva manuset Del 1: Gör en plan
Skriva manuset Del 1: Gör en plan
Skriva manuset Del 1: Gör en plan
Skriva manuset Del 1: Gör en plan

Det första vi vill göra är att skapa en plan. Vad exakt vill vi att skriptet ska göra. A.) När strömmen bryts eller BSOD kommer upp vill vi att den startas om. (Ta hand om i steg 1 Redigera BiosB.) Så snart den startas om vill vi skriva till en fil exakt datum och tid då den startades om. C.) Vi vill kunna ändra den filen. Om det startar om mer än en gång skulle vi aldrig veta. D.) Vi vill att det ska ha felkorrigering så att det inte går sönder och vi ser till att vi får alla våra omstart utan att missa något på grund av dålig kodning. E.) Vi vill ha det att dyka upp ett meddelande som säger att det har startats om. F.) Vi vill att det ska öppna filen vi skrev till så att vi kan se en lista över alla omstarter när vi klickar ok på meddelandet dyker upp.

Steg 3: Skriva manuset Del 2: Skapa ditt manus och tilldela variablerna

Skriva manus Del 2: Skapa ditt manus och tilldela variablerna
Skriva manus Del 2: Skapa ditt manus och tilldela variablerna

Ok första saker först, skapa ett textdokument och byt namn på det till any_name.vbs. Jag använde shutdown_catcher.vbs men du kan använda vad som helst. Nu högerklickar du på vbs -filen och trycker på edit. Om du använder anteckningsblock ++ nu skulle det vara en bra tid att öppna den, om du inte gör det men planerar att koda dig lite bör se till att få det. Ok nu är det första vi vill göra att skapa variabler. Variabler är i princip bara en platshållare så vi behöver inte skriva en massa saker en massa gånger. exempel: vi har en mening som säger "den snabba bruna räven hoppar över de lata hundarna tillbaka". men det är i vår kod 20 gånger. vi kan antingen skriva ut hela meningen 20 gånger eller skapa en variabel och tilldela meningen till den variabelen Så i det här exemplet skapar vi variabeln strSentence och tilldelar sedan "den snabba bruna räven hoppar över lata hundar tillbaka" till den variabeln. Nu är allt vi behöver göra att skriva strSentence varje gång vi behöver meningen och den vet att skriva "den snabba bruna räven hoppar över lata hundarna tillbaka" hur gör vi det: Om vi har flera variabler av samma typ kan vi sätta dem på samma rad och separera variablerna med kommatecken. För att skapa en variabel måste vi göra det som kallas dimensionering av variabeln. För att göra detta skriver vi Dim före variabeln och sedan lägger vi ett prefix på variabeln så att vi vet vad variabeln representerar. Exempel är str för en strängvariabel obj för en objektvariabel const för en konstant…. Listan fortsätter och fortsätter. det är de vi kommer att använda i det här skriptet så jag ska förklara dem lite. en sträng är vanligtvis text som en mening. Ett objekt är vanligtvis något fysiskt som en fil eller ett program. och en konstant är något som alltid kommer att ha samma innebörd i hela manuset. OBS: VARJE GANG EN RAD HAR EN ENKEL "INNAN DEN LINNEN SKAL IGNORERAS AV SKRIFTEN. DE KALLAS ANMÄRKNINGAR OCH SÄVNAS VANLIGT MED PROGRAMMERARN SÅ De kan komma ihåg vad de gjorde senare när de granskade koden. JAG KOMMER ATT ANVÄNDA DEM FÖR ATT GÖRA KOMMENTARER OM KODEN SÅ DU KAN SE VARFÖR JAG STUFFAD SÅ SOM JAG GJORDE. OCH DE KOMMER ÖVER OCH RADIEN DE KOMMENTARER OM. Faktisk användning: 'den här raden tvingar dig att definiera alla variabler. Utan det kommer någon odefinierad variabel att behandlas som ett objektOption Explicit nu skapar vi 5 variabler för mappar och filer vi kommer att behöva namnge dem hur du vill men konventionen är preNameDim objFiSyOb, objSysFold, objShell, objFile, objTextFile nu behöver vi för att skapa strängvariabler för katalogen, fil och filnamnDim strDir, strFile, strFileNamenow tilldela värden till variablerna 'strDir är vår katalog vi vill ha mappen i strDir = "C: / Catcher"' strFile är där vi vill textdokumentet och vad det heterstrFile = "\ Shutdown_catcher.txt" 'strfile -namnet är så att vi har namnet på filen för användning i pop upsstrFileName = "Shutdown_catcher.txt"' nästa måste vi tilldela en konstant för åtkomst till fil vi har tre alternativ. vi kommer bara att använda tillägget i den här koden men det är trevligt att känna till dem alla. Const forReading = 1, forWriting = 2, ForAppending = 8 'till sist behöver vi ställa in en variabel till filsystemet objekt så att vi kan kalla det senare när vi behöver detSet objFiS yOb = CreateObject ("Scripting. FileSystemObject")

Steg 4: Förklaringar däremellan

Förklaringar däremellan
Förklaringar däremellan

Nu när vi har våra variabler dimensionerade är det bara att komma ihåg den specifika variabeln varje gång. Detta minskar inte bara antalet skrivningar vi gör utan skapar också mindre misstag på grund av felstavningar. Nu är det tekniskt allt vi behöver göra att skriva följande kod och vi är klara 'ställ in filen för appendingSet objTextFile = objFiSyOb. OpenTextFile (strDir & strFile, ForAppending, True) 'skriv den nya raden till fileobjTextFile. WriteLine ("Din dator stängs av på" & date & "at" & time)' stäng filenobjTextFile. Close'make a pop upWscript. Echo ("Your dator Stäng av "& date &" at "& time) 'öppna filen i IESet objShell = CreateObject (" WScript. Shell ") objShell.run (" Explorer "&" "& strDir &" / shutdown_catcher.txt ") Problemet är att det inte kommer att ha någon felkorrigering, och alla enkla fel som filen som inte finns eller variabel som redan har tilldelats kommer att krascha skriptet.

Steg 5: Skriva manuset Del 3: If Then uttalanden som felkorrigering

Skriva skriptet Del 3: If Then uttalanden som felkorrigering
Skriva skriptet Del 3: If Then uttalanden som felkorrigering

Det enklaste sättet att göra felkorrigering är att använda if/then -satser. I princip säger if if -sats om något händer, gör det annars. Genom att häcka om/sedan uttalanden kan du skapa en rad saker som måste hända. Om a och b och c händer, gör det här annars. Exempel: vi vill se till att filen vi vill skriva till finns där om vi hittar den vill vi göra ingenting om vi inte hittar den vi vill skapa den eller vi vill kontrollera om mappen finns där och om inte skapa den och sedan kontrollera om filen finns där när vi hittar mappen och om den inte skapas den första är ett exempel på en if then -sats den andra är kapslad om då. vi gör det: det finns fyra delar till ett if if -uttalande if/then elseend om det i grunden är om detta är sant, gör så annars gör det och avsluta påståendet en ordentligt kodad om uttalandet skulle vara: If something = something Gör sedan vad du behöver göra Annars gör något annatSlut om du kan använda vilket argument som helst så länge det är sant kommer det att följa den dåvarande delen och ignorera den andra delen men om det är falskt kommer det att hoppa över då och gå till annat Sedan när vi avslutar if -satsen vi sätter "slutet om", men om vi har kapat om uttalanden måste vi avsluta varje if -uttalande. Det kommer att avsluta dem från barn till förälder så det första "slutet om" slutar if -satsen i föräldern, där den andra slutar originalet (förälder) if -satsen. För att göra en popup skriver vi bara Wscript. Echo ("whatever vi vill säga i meddelandet ") för att lägga till ett variabelvärde i det lägger vi det utanför eller mellan dubbla citattecken med hjälp av ampersand (&) -tecknet som avgränsare så att manuset vet att det är en variabel och inte en text. som detta: Wscript. Echo ("Bla bla bla" & strDir & "bla bla bla" & strFilename & "bla bla bla.") Utmatningen skulle vara en popup som sa Bla bla bla C: / Catcher bla bla bla shutdown_catcher.txt bla bla bla. Actual Usage: 'if the folder C; / exist If objFiSyOb. FolderExists (strDir) Then'get folder Set objSysFold = objFiSyOb. GetFolder (strDir)' elseElse'create the folder c; / catcher Set objSysFold = objFi. CreateFolder (strDir) 'och kontrollera om filen och mappen finns Om objFiSyOb. FileExists (strDir & strFile) Then'if det får mapp c: / catcher Ställ ob jSysFold = objFiSyOb. GetFolder (strDir) 'elseElse'create text document shutdown_catcher.txt Set objFile = objFiSyOb. CreateTextFile (strDir & strFile)' pop up a message to say you created them both Wscript. Echo ("We have created a folder med namnet "& strDir &" och en fil med namnet "& strFilename &" och placerade den i katalogen "& strDir & strFile &". ") '' nestad if statementEnd If'end original if statementEnd If'now i den första if -satsen vi har redan kollat efter mapp och hittat den så nu letar vi efter fileIf objFiSyOb. FileExists (strDir & strFile) Then'if hittade get folder Set objSysFold = objFiSyOb. GetFolder (strDir) 'annars El'skapa texten doc Set objFile = objFiSyOb. CreateTextFile (strDir & strFile) 'skapa en popup som säger att vi skapade textdokumentet Wscript. Echo ("Vi har skapat en fil med namnet" & strFileName & "i" & strDir & "filmapp.") Sluta om

Steg 6: Förklaringar däremellan

Förklaringar däremellan
Förklaringar däremellan

Om du tittar noga på koden från föregående steg ser du både en kapslad och icke-kapslad if-sats. Den första är ett kapslat uttalande. Det söker efter mappen och filen och om inte hittar dem skapar båda. Den andra letar bara efter en fil och om den inte hittar den skapar den bara filen. Man kan säga varför båda. Vad händer om filen raderas men mappen inte är det. Den första if -satsen skulle hoppa över skapandet av filen eftersom den hittade mappen och aldrig skulle aktivera den andra delen av satsen. Så när du gick till att skriva till filen skulle det komma fel eftersom filen skulle saknas. Så genom att ha den andra där löser det detta problem. Tekniskt sett kan du ta bort det kapslade påståendet eftersom det är nästan detsamma som det andra om då uttalandet men då skulle du bara ha en popup och det skulle inte vara lika personligt Plus det gav mig en chans att visa dig nestad i motsats till un -kapslade om uttalanden.

Steg 7: Mer felkorrigering

Mer felkorrigering
Mer felkorrigering

Nu när vi har slutfört majoriteten av felkorrigeringen vill vi skriva till filen och visa popup -fönstren. Problemet är att vi får behörighetsfel om vi inte släpper referensen till det tidigare objektet som är lagrat i variabeln. Så vi vill lägga in ett litet kodavsnitt som säger att sätta variablerna till ingenting. Ser ut så här: set objFile = nothingset objSysFold = ingentingSå för dig som följer med hemma din kod till denna punkt borde vara (jag tog kommentaren out): Option ExplicitDim objFiSyOb, objSysFold, objShell, objFile, objTextFileDim strDir, strFile, strFileNamestrDir = "C: / Catcher" strFile = "\ Shutdown_catcher.txt" strFileName = "ShutdownRcstring" ForAppending = 8Set objFiSyOb = CreateObject ("Scripting. FileSystemObject") If objFiSyOb. FolderExists (strDir) Ställ sedan in objSysFold = objFiSyOb. GetFolder (strDir) Else Set objSysFold = strjCSFirDrByFirDrByFirDrFirByFirDrFirByFirDrFirByFirDrFirFirDrFirFirDrFirFirOrStrFirFirOrFirStrSFirOrFirSFirOrFirOrFirOBr Ange objSysFold = objFiSyOb. GetFolder (strDir) Else Set objFile = objFiSyOb. CreateTextFile (strDir & strFile) Wscript. Echo ("Vi har skapat en mapp med namnet" & strDir & "och en fil med namnet" & strFilename & "och placerat den i" katalogen "& strDir & strFile &". ") Slut I fEnd IfIf objFiSyOb. FileExists (strDir & strFile) Ställ sedan in objSysFold = objFiSyOb. GetFolder (strDir) Else Set objFile = objFiSyOb. CreateTextFile (strDir & strFile) Wscript. Echo ("har" och "skapat en "& strDir &" filmapp. ") Avsluta Ifset objFile = nothingset objSysFold = ingenting

Steg 8: Skriva manuset Del 4: Ange attribut

Skriva manuset Del 4: Ange attribut
Skriva manuset Del 4: Ange attribut

Nu måste vi ställa in attributen till filen så att vi kan ändra den. Tidigare har vi ställt in tre konstanta variabler: forReading = 1forWriting = 2 forAppending = 8 om du ställer in den förReading kommer du att kunna läsa den men inte skriva till den. If you set it to forWriting du kommer att skriva över den befintliga filen varje gång du kör programmet. Om du ställer in det på förAppending lägger du till en ny rad varje gång skriptet körs till dokumentet. Eftersom vi vill ha en logg för varje gång det startar om vill vi att det ska läggas till och inte skrivas över så vi använder forAppending. Hur vi gör det: du måste namnge objektet du vill ställa in attribut till. Eftersom vi redan har gjort det mesta av arbetet i de föregående stegen behöver vi bara komma ihåg variabler vid denna tidpunkt. Ställ sedan in den på true. Actual Usage: 'object to set = filesystemobject.action (katalog+namn på fil, attribut, true eller false) Ange objTextFile = objFiSyOb. OpenTextFile (strDir & strFile, ForAppending, True)

Steg 9: Skriva manus Del 5: Skriva till fil

Skriva manus Del 5: Skriva till fil
Skriva manus Del 5: Skriva till fil

Att skriva till en fil är ungefär som att skriva en popup. Du lägger bara: objTextFile. WriteLine ("Vad du än vill säga" och variabel för att dra in för att skriva rad) Den enda skillnaden är den första delen. I en popup lägger du: Wscript.choin till en skrivrad du lägger: objTextFile. WriteLineAnd i en skrivrad måste du stänga skrivlinjen så att den vet att sluta skriva och för det använder du: objTextFile. CloseActual Usage: objTextFile. WriteLine ("Din dator stängs av" & date & "at" & time) objTextFile.close'now lägg till i en popup för att säga att du skrev till filen så att personen vet att det har hänt'och de måste stänga den för att öppna filen och viewWscript. Echo ("Din dator stängs av" & date & "at" & tid)

Steg 10: Skriva manus Del 5: Öppna filen för visning

Skriva manus Del 5: Öppna filen för visning
Skriva manus Del 5: Öppna filen för visning

Skriptet stannar vid denna tidpunkt tills någon klickar på popup -fönstret. När du kommer förbi popup -fönstret kan du lägga in en rad som öppnar filen. Genom att använda någon felkorrigering på den hjälper det till att hålla programmet igång. När du skapar ett fel i vbscript lägger det till ett värde till variabeln "err.number" som är en fördefinierad variabel i vbscript. Du behöver inte definiera den och kan använda den precis som alla andra variabler så länge du inte bryter mot dess regler. Värdet som tilldelas variabeln err.number är koden för det fel som uppstod. Nu kan du antingen söka efter varje felkod som är känd i vbscript -databasen och se till att den inte uppstod. Eller lättare, det är bara att kolla för att se till att variabeln err.number är tom. om det är tomt inträffade inga fel. För att göra det kontrollerar vi bara om variabeln är lika med vbEmpty. Så i vårt manus vill vi använda ett annat if if -uttalande. Och kolla om ett fel uppstod och om det inte öppnade filen för visning, men om det gjorde det så dyker det upp ett meddelande med felnumret i det så att vi kan felsöka. När vi sedan är klara med vårt skript skriv Wscript. Quit. Detta säger att manuset ska avsluta sig själv. Detta hjälper till att hålla minnesläckorna och oönskade processer igång. Hur används det: om err.nummer är lika med vbEmpty, skapa sedan ett skal och kör sedan programmet från skalet, annars dyker det upp ett meddelande som säger att det uppstod ett fel om. errorsIf err.number = vbEmpty then'if none skapa ett skal Ange objShell = CreateObject ("WScript. Shell") 'öppna sedan filen från det skalet med hjälp av explorer. det öppnas faktiskt i IE även om objShell.run ("Explorer" & "" & strDir & "\ shutdown_catcher.txt") 'annars dyker upp ett meddelande med felnummerElse WScript.echo "VBScript Error:" & err.numberEnd If 'end scriptWscript.quit

Steg 11: Få skriptet att köras vid start

Få skriptet att köras vid start
Få skriptet att köras vid start

Det finns en filmapp i startmenyn som heter Startup. Allt som placeras i den här mappen startas så snart datorn startas. Genom att placera skriptfilen i startmappen kommer den att köras varje gång datorn startas om om den är avsiktlig eller inte. Eftersom jag bara använder detta som ett diagnostiskt verktyg behöver det inte göras till en tjänst för att starta, och jag behöver inte lägga in det i registret för att starta det, så det kommer att gå bra. När jag har fixat datorn kan jag radera filen från startmappen och det behövs ingen annan sanering.

Steg 12: Kör programmet

Kör programmet
Kör programmet
Kör programmet
Kör programmet
Kör programmet
Kör programmet

När du kör vbscript -filen kommer den nu A.) Kontrollera om mappen C: / Catcher finns och om den inte skapas. B:) Kontrollera om filen Shutdown_catcher.txt finns och om den inte skapas. C:) Om den skapade antingen en mapp eller fil eller båda kommer det att dyka upp ett meddelande som säger att det skapade dem (Obs: det ska bara göra detta vid första körningen efter att det redan ska vara där om det inte raderas så du bör bara se det meddelandet en gång. Det kan vara en bra idé att köra det här skriptet en gång under en kontrollerad omstart så att du kan kringgå dessa popup -fönster eller så kan du inte skriva något till filen eftersom det inte kommer att kringgå filen som skapas popup -fönster.) D:) Skriv en rad i textdokument Shutdown_Catcher.txt som säger att datorn stängs av på ett sådant datum vid en sådan tid. E:) Pop upp ett meddelande som säger att det var en omstart F:) Öppna filen för visning. Om du tittar i nästa steg du kommer att se koden som skriven. Nu är det bara att luta mig tillbaka och vänta. Varje gång datorn startar om kommer jag att registrera det. Sedan kan jag granska posten och se om det finns någon konsistens i den. Exempel kan vara att det startar om varje halvtimme eller att det startas om när det finns ett steg eller 45 på klockan. Detta är inte på något sätt det enda sättet jag kontrollerar datorn, bara så du vet. Jag har också ett benchmarking -program som körs för att kontrollera temps så jag vet hur varmt det är när det stängs av, spänning så jag vet om strömförsörjningen går sönder och några andra användbara saker. Jag hoppas att detta var till hjälp. Jag vet att jag gillar det så kanske andra också kommer att göra det. Om du har några frågor är du välkommen att fråga. Jag kanske inte kommer till dem omedelbart men med en liten stund så ska jag svara dig. Beror på hur min dag/vecka går.

Steg 13: Koden

Koden
Koden

Detta är koden som skriven utan alla tips och anmärkningar_Option ExplicitDim objFiSyOb, objSysFold, objShell, objFile, objTextFileDim strDir, strFile, strFileNamestrDir = "C: / Catcher" strFile = "\ Shutdown_catchtxt" text " Const forReading = 1, forWriting = 2, ForAppending = 8Set objFiSyOb = CreateObject ("Scripting. FileSystemObject") If objFiSyOb. FolderExists (strDir) Set Ange objSysFold = objFiSyOb. GetFolder (strDj) objFiSyOb. FileExists (strDir & strFile) Ange sedan objSysFold = objFiSyOb. GetFolder (strDir) Else Set objFile = objFiSyOb. CreateTextFile (strDir & strFile) Wscript. Echo ("Vi har skapat en mapp med namnet" och " "& strFilename &" och placerade den i katalogen "& strDir & strFile &". ") Avsluta IfEnd IfIf objFiSyOb. FileExists (strDir & strFile) Ställ sedan in objSysFold = objFiSyOb. GetFolder (strDir) Else Set objFile = objFiSy strDir & strFile) Wscript. Echo ("Vi har skapade en fil med namnet "& strFileName &" i mappen "& strDir &". ") Slut Ifset objFile = nothingset objSysFold = nothingSet objTextFile = objFiSyOb. OpenTextFile (strDir & strFile, ForAppending, True) objTextFile. Write Stäng av "& date &" at "& time) objTextFile. CloseWscript. Echo (" Your computer Shut down on "& date &" at "& time) If err.number = vbEmpty then Set objShell = CreateObject (" WScript. Shell ") objShell.run (" Explorer "&" "& strDir &" / shutdown_catcher.txt ") Else WScript.echo" VBScript Error: "& err.numberEnd IfWScript. Quit

Rekommenderad: