Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 12 gru 2024, o 00:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 6 lis 2016, o 19:43 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

Cześć.

Wychodzi na to, że jesteście ostatnią deską ratunku. Otóż piszę w .bat pewien skrypt, do którego działania niezbędne jest generowanie komunikatów głosowych z tekstu. Można to osiągnąć na kilka sposobów. Np. napisać skrypt w języku vbs:

Kod:
dim speechobject
set speechobject=createobject("sapi.spvoice")
speechobject.speak "test"


który można zapisać do pliku z rozszerzeniem .vbs i uruchamiać z poziomu linii komend na przykład.

Innym rozwiązaniem jest pobranie i wrzucenie do c:\Windows\System32 pakietu nircmd:
http://www.nirsoft.net/utils/nircmd.html

a następnie wykonywanie z dowolnego miejsca poleceń w stylu:

Kod:
nircmd speak text "test"



Wszystko działa pięknie i ładnie, do póki nie chcemy, by skrypty uruchamiały się z poziomu Harmonogramu Windows.


Przykład:

Skrypt: d:\test.bat

Kod:
@echo off

>>"d:\%date%-%COMPUTERNAME%-%USERNAME%.log" echo %date%_%time: level1
call d:\powitanie-Mariusz.bat
>>"d:\%date%-%COMPUTERNAME%-%USERNAME%.log" echo %date%_%time: level2



Skrypt: d:\powitanie-Mariusz.bat

Kod:
@echo off

c:\Windows\System32\nircmd mutesysvolume 0
c:\Windows\System32\nircmd setsysvolume 20000
c:\Windows\System32\nircmd speak text "test"


Uruchamiam z palca d:\test.bat

Słyszę komunikat i znajduję log: d:\2016-11-06-LAPTOP-LENOVO-Mariusz.log o treści:

Kod:
2016-11-06_time: level1
2016-11-06_time: level2


Usuwam log d:\2016-11-06-LAPTOP-LENOVO-Mariusz.log. Idę do Harmonogramu zadań. Tworzę nowe zadanie:

ObrazekObrazekObrazekObrazekObrazek

Uruchamiam.

Został stworzony log: d:\2016-11-06-LAPTOP-LENOVO-Mariusz.log

Z zawartością:

Kod:
2016-11-06_time: level1
2016-11-06_time: level2


Skrypt uruchamia się, ale bez komunikatu głosowego...

Elektroda wymiękła. Trzepak też.

Proszę was o pomoc.

Pozdrawiam
Mariusz

PS. wywaliłem @echo off i zrobiłem przekierowanie komunikatów do pliku:

Obrazek

Efekt:

Kod:
C:\Windows\system32>echo 2016-11-06_19:48:18,05: level1 1>>"d:\2016-11-06-LAPTOP-LENOVO-Mariusz.log"

C:\Windows\system32>call d:\powitanie-Mariusz.bat

C:\Windows\system32>c:\Windows\System32\nircmd mutesysvolume 0

C:\Windows\system32>c:\Windows\System32\nircmd setsysvolume 20000

C:\Windows\system32>c:\Windows\System32\nircmd speak text "test"

C:\Windows\system32>echo 2016-11-06_19:48:18,20: level2 1>>"d:\2016-11-06-LAPTOP-LENOVO-Mariusz.log"

C:\Windows\system32>pause
Press any key to continue . . .


Niby błędów brak, a komunikat z głośników nie leci (gdy skrypt wyzwlany z harmonogramu zadań).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 20:12 
Offline
Nowy

Dołączył(a): 09 mar 2014
Posty: 8
Pomógł: 0

Spróbuj zmienić by uruchamiał się nie przy starcie systemu a przy logowaniu dowolnego użytkownika.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 20:23 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

rafalw121 napisał(a):
Spróbuj zmienić by uruchamiał się nie przy starcie systemu a przy logowaniu dowolnego użytkownika.

Próbowałem. Bez zmian.

Jak wspomniałem kliknięcie w ramach testu buttona (nie trzeba czekać na określony wyzwalacz) daje taki sam efekt.

Obrazek

Log sugeruje wykonanie się skryptu. Tymczasem w głośnikach komunikatu brak. Gdy skrypt uruchomiony poza harmonogramem zadań, z głośników leci komunikat.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 20:40 
Offline
Nowy

Dołączył(a): 09 mar 2014
Posty: 8
Pomógł: 0

Spróbuj może zmienić nazwę pliku powitanie-Mariusz.bat na inną lub i przenieść go na chwilę na c:\windows\sysytem32



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 21:25 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Spróbuj całe polecenie dać w cudzysłowiu, oraz przejść do właściwego katalogu w bacie z którego uruchamiasz polecenie czyli "windows\system32", o ile pamiętam to taskman nie odpali czegoś z innego katalogu.
Nie zapomnij o wypełnieniu pola "rozpocznij w".

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 21:51 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

Harry napisał(a):
Spróbuj całe polecenie dać w cudzysłowiu, oraz przejść do właściwego katalogu w bacie z którego uruchamiasz polecenie czyli "windows\system32", o ile pamiętam to taskman nie odpali czegoś z innego katalogu.
Nie zapomnij o wypełnieniu pola "rozpocznij w".


Zerknij. Wywaliłem @echo off i zrobiłem przekierowanie komunikatów do pliku:

Obrazek

Efekt:

Kod:
C:\Windows\system32>echo 2016-11-06_19:48:18,05: level1 1>>"d:\2016-11-06-LAPTOP-LENOVO-Mariusz.log"

C:\Windows\system32>call d:\powitanie-Mariusz.bat

C:\Windows\system32>c:\Windows\System32\nircmd mutesysvolume 0

C:\Windows\system32>c:\Windows\System32\nircmd setsysvolume 20000

C:\Windows\system32>c:\Windows\System32\nircmd speak text "test"

C:\Windows\system32>echo 2016-11-06_19:48:18,20: level2 1>>"d:\2016-11-06-LAPTOP-LENOVO-Mariusz.log"

C:\Windows\system32>pause
Press any key to continue . . .


Widać, że jestem w folderze c:\Windows\System32 (tam gdzie nircmd). Nazwa pliku logu wskazuje, że zadanie zostało wykonane na moim użytkowniku (Mariusz). A mimo to komunikatu w głośnikach brak. Zgroza (winzgroza).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 22:12 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

widziałem, ale spróbuj wywalić c:\windows\system32... - odpalaj samo nircmd.exe (z exe, może to też ma znaczenie, choć nie powinno)bez ścieżki i wypełnij "rozpocznij w..."
czy nircmd z nieznaną komendą coś wyświetla? - byłoby wiadomo czy on się wogóle uruchamia.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Ostatnio edytowano 6 lis 2016, o 22:24 przez Harry, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 22:15 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

Tu pojawił się ciekawy komentarz:
http://forum.centrumwindows.pl/Temat-Sy ... 1#pid58601



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 22:28 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

fuck, faktycznie, on chyba "wirtualizuje konto" użyszkodnika, w harmonogramie powinna być opcja że ma odpalać w aktualnej sesji, albo trzeba dodać zadanie z wiersza poleceń. Ostatni raz bawiłem się tym na serwerowej wersji systemu ;)

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 22:31 
Offline
Nowy

Dołączył(a): 09 mar 2014
Posty: 8
Pomógł: 0

Sprawdziłem u mnie na win8.1 działa bez żadnych dodatkowych ustawień Dźwięk słychać w końcowym momencie uruchamiania systemu jak jest całkowicie załadowany i gotowy do zalogowania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 22:39 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

rafalw121 napisał(a):
Sprawdziłem u mnie na win8.1 działa bez żadnych dodatkowych ustawień Dźwięk słychać w końcowym momencie uruchamiania systemu jak jest całkowicie załadowany i gotowy do zalogowania.


Jak podlinkuję bezpośrednio d:\powitanie-Mariusz.bat i kliknę w "uruchom" w GUI harmonogramu, to komunikat się odtwarza.
A jak podlinkuję d:\test.bat, które wykonuje za pomocą call d:\powitanie-Mariusz.bat to wtedy w głośnikach jest cisza.

Oczywiście jak wykonam, d:\test.bat z innego miejsca niż harmonogram, to wszystko działa poprawnie...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2016, o 22:48 
Offline
Nowy

Dołączył(a): 09 mar 2014
Posty: 8
Pomógł: 0

Umieść wszystko w jednym pliku bat i wywal polecenie Call.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2016, o 04:11 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

Nie mogę z uwagi na wielkość i złożoność całości. Potrzebuję dojść przyczyn, dlaczego brak komunikatu gdy akcja wykonywana przez harmonogram.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2016, o 07:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

A czy w momencie uruchomienia Twojego skryptu winda ustawiła już głośność dźwięku? Być może wszystko się odtwarza tylko tego nie słychać... W końcu to start systemu i wszystko jest możliwe.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2016, o 07:54 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

SylwekK napisał(a):
A czy w momencie uruchomienia Twojego skryptu winda ustawiła już głośność dźwięku? Być może wszystko się odtwarza tylko tego nie słychać... W końcu to start systemu i wszystko jest możliwe.


Tak, jak napisałem wcześniej - harmonogram zadań Windows ma specjalny button "uruchom" służący do testowania wprowadzonego taska. Klikam go w momencie, gdy system jest już dawno w pełni uruchomiony.

Obrazek

Jak podlinkuję (w harmonogramie) bezpośrednio d:\powitanie-Mariusz.bat i kliknę w "uruchom" w GUI harmonogramu, to komunikat się odtwarza.
A jak podlinkuję d:\test.bat, które wykonuje za pomocą call d:\powitanie-Mariusz.bat to wtedy w głośnikach jest cisza.

Oczywiście jak wykonam, d:\test.bat z innego miejsca niż harmonogram, to wszystko działa poprawnie...

Nie wiem czy w takim wypadku trop z wirtualizacją użytkownika / sesją i jej wyciszeniem jest poprawny.

Nie wiem też w jaki sposób odtwarzać dźwięk niezależnie od sesji.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2016, o 13:06 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

a jak odpalisz bez "call"?

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO