Mam taki skrypt (ktoś mi kiedyś uprzejmie napisał, ja się na tym nie znam ): Set wshshell = wscript.CreateObject(“WScript.Shell”) wscript.sleep 35000 Wshshell.run “D:\0\Rainlendar2.lnk” wscript.sleep 400000 Wshshell.run “taskkill /F /im Rainlendar2.exe”
Czy da się go zmienić tak, aby program był uruchamiany tylko raz dziennie wraz z systemem? Włączam i wyłączam laptop wiele razy dziennie o bardzo różnych porach dnia i nocy, więc nie mogę ustalić konkretnej godziny. Po prostu chciałabym, aby program był uruchamiany tylko za pierwszym uruchomieniem systemu każdego dnia, bez względu na to, o której godzinie to pierwsze uruchomienie nastąpi.
uruchamiać program raz dziennie (jak już raz się wykonał w cyklu dobowym, to ma się nie uruchamiać),
po jakimś czasie ma być automatycznie wyłączany?
Napisz algorytm pod to.
Kolejna sprawa - co dla Ciebie oznacza uruchamianie laptopa? Pełne wyłączenie? Czy tylko zamykasz klapę - laptop się hibernuje/usypia a po otwarciu masz dokładnie to samo otwarte, co przed zamknięciem?
No ale założę się, że jest gdzieś w internecie mały programik z ładnym GUI, który po wskazaniu pliku robi to bez tych kombinacji - tylko dobrze użyć google.
Dziękuję, tylko sama raczej sobie z tym nie poradzę Jak już pisałam, nie znam się na tym. Miałam nadzieję, że wystarczy coś zmienić/dopisać do tego co już mam i że ktoś mi poda gotowca
Raczej nie chcę instalować dodatkowych programów, bo pewnie ten program musiałby cały czas działać w tle
Np. może być coś takiego, gdzie nazwę pliku można sobie zmienić na inną. Const ForReading = 1: Const ForWriting = 2: plik=“C:/data.txt”
Set Wshshell = WScript.CreateObject(“WScript.Shell”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
if objFSO.FileExists(plik)=false then
Set MyFile = objFSO.CreateTextFile(plik,True)
MyFile.WriteLine(“off”)
MyFile.Close
end if
Set objFile = objFSO.OpenTextFile(plik, ForReading)
strLine1 = objFile.ReadLine
if strLine1<>cstr(Date) then
objFile.Close
Set objFile = objFSO.OpenTextFile(plik, ForWriting)
objFile.Write Date
objFile.Close
WScript.sleep 35000
Wshshell.run “D:\0\Rainlendar2.lnk”
WScript.sleep 400000
Wshshell.run “taskkill /F /im Rainlendar2.exe”
end if
Jeżeli skrypt będzie kopiowany, to należy przed jego uruchomieniem zmienić np. w notatniku ręcznie znaki cudzysłowu aby były zrozumiałe dla interpretatora w przeciwnym wypadku będzie pokazywany błąd.
Skrypt najpierw sprawdza czy na dysku znajduje się plik C:/data.txt
Jeżeli pliku brak, to zostanie utworzony, a następnie sprawdzane jest
czy w pliku zapisana jest aktualna data. Jeżeli aktualna data nie jest zapisana, to
zostanie ona zapisana i uruchomiony zostanie program Rainlendar2.lnk w przeciwnym wypadku czynności te zostaną pominięte.
Const ForReading = 1: Const ForWriting = 2: plik="C:/data.txt"
Set Wshshell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.FileExists(plik)=false then
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(plik,True)
MyFile.WriteLine("off")
MyFile.Close
end if
Set objFile = objFSO.OpenTextFile(plik, ForReading)
strLine1 = objFile.ReadLine
if strLine1<>cstr(Date) then
objFile.Close
Set objFile = objFSO.OpenTextFile(plik, ForWriting)
objFile.Write Date
objFile.Close
WScript.sleep 35000
Wshshell.run "D:\0\Rainlendar2.lnk"
WScript.sleep 400000
Wshshell.run "taskkill /F /im Rainlendar2.exe"
end if
Mnie zaciekawił komunikat o zapisie poza plikiem data.txt ale to może wina, że go opróżniłem w notatniku.
Poczekam 6 minut i 40 sekund i zobaczę czy po zamknięciu kalkulatora bez edycji pliku będzie to samo, spróbuje potem przestawić datę na dzień do przodu (by sprawdzić jak wtedy zareaguje).
OK, działa - muszę poszukać czemu się wywalił jak plik z datą był pusty (może nie może być otwarty w notatniku).
Nie musisz czekać 6 minut wystarczy zmniejszyć czas oczekiwania np. na: WScript.sleep 40
Jeżeli plik data.txt jest pusty, to znaczy , że nie zawiera żadnej linii i stąd błąd. Przed taką ewentualnością też można zabezpieczyć,wystarczy w skrypcie dodać dodać linię: On Error Resume Next
Const ForReading = 1: Const ForWriting = 2: plik=“C:/data.txt”
Set Wshshell = WScript.CreateObject(“WScript.Shell”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
if objFSO.FileExists(plik)=false then
Set MyFile = objFSO.CreateTextFile(plik,True)
MyFile.WriteLine(“off”)
MyFile.Close
end if
On Error Resume Next
Set objFile = objFSO.OpenTextFile(plik, ForReading)
strLine1 = objFile.ReadLine
if strLine1<>cstr(Date) then
objFile.Close
Set objFile = objFSO.OpenTextFile(plik, ForWriting)
objFile.Write Date
objFile.Close
WScript.sleep 35000
Wshshell.run “D:\0\Rainlendar2.lnk”
WScript.sleep 400000
Wshshell.run “taskkill /F /im Rainlendar2.exe”
end if
Nic dziwnego próbujesz plik tekstowy zapisać na partycję systemową, która jest domyślnie chroniona i potrzebne są prawa administratora.
Są dwa wyjścia, albo zmienić lokalizację pliku, albo uruchamiać skrypt z uprawnieniami administracyjnymi.