PowerShell przypisanie i porównanie dat


(Janfk) #1

Prośba do zaawansowanych użytkowników Windows. Proszę o podpowiedź - jak PowerShell'u ( Win 7 x64 HP) przypisać datę systemową do zmiennej1 a następnie porównać ją z inną zmienną2 zawierającą jakąś przyszłą datę ( np. sobota lub niedziela), w której to dacie nie będzie możliwe wykonanie jakiegoś zadania np. uruchomienie jakiegoś programu lub strony internetowej.

Będę wdzięczny za w miarę czytelną sugestię.

Uczeń.


(mktos) #2

Wyjdę z założenia, że kod jest samodokumentujący:

PS C:\Users\Marcin> $date = [DateTime]::Now

PS C:\Users\Marcin> $date


2 listopada 2011 19:18:04


PS C:\Users\Marcin> $date2 = [DateTime]::Parse("2011-12-03");

PS C:\Users\Marcin> $date2


3 grudnia 2011 00:00:00


PS C:\Users\Marcin> if ($date -ge $date2) { "Wieksze!" } else { "Mniejsze!" };

Mniejsze!

Czyli: obiekt System.DateTime zawiera wszystko, co związane z manipulacją czasem, a porównania możesz dokonywać normalnie w if i z normalnymi operatorami większości, mniejszości.

Oczywiście, do uruchamiania zadań w określonym czasie lepiej nadaje się Harmonogram Zadań.


(Janfk) #3

Ok. Marcin, if ($date -ge $date2) { "Wieksze!" } else { "Mniejsze!" };

dzięki za wskazówkę [datetime], przeobiłem w różne strony, działa

ale gdy próbuję podstawić w miejsce { "Mniejsze!" } np. notepad.exe

to pokazuje na czerwono różne errors.

w jaki sposób po else uruchomić notepada?

Czy trzeba podać całą ścieżkę do programu notepad?

Franek


(mktos) #4
if (2 -eq 1) { notepad.exe } else { calc.exe }

Takie coś mi działa i zgodnie z założeniami (1 nigdy nie równa się 2) zawsze uruchamia kalkulator. Ewentualnie możesz zrobić jeszcze tak:

& "notepad.exe"

Jak nadal nie działa - pokaż komunikat błędu. Nie jestem, niestety, wróżką :slight_smile:


(Janfk) #5

Re: Marcin, thanks a lot, now it work well enough.

Now I see how lot of work I will have to make.

Wll, any way, PowerShell is fine.