CMD uruchamianie *.mp3 w tle


(nolokon) #1

Witam z powrotem :slight_smile:

Piszę mały program w *.bat, który byłby licznikiem.

Kiedy czas się kończy odpala się jakaś cicha muzyczka, lecz razem z nią okno.

Kiedyś widziałem program, który uruchamiał pliki *.mp3 w tle.

Zna ktoś do tego komendę albo sposób jakim uzyskać taki efekt?

Jeśli tak, proszę o pomoc.

Pozdrawiam.

 


(nintyfan) #2

W Windows istnieje polecenie start, które uruchamia komendę w tle.

Chyba, że chodzi o coś innego - jeżeli tak, to możesz to zrobić za pomocą bash-a.


(C2268787) #3

Mozesz to zrobić pisząc program w C++

jeśli nie masz kompilatora możesz skorzystać ze strony tutaj -> https://ganquan.info/g+±compiler/

sciągasz program który umieszczasz razem z programem kompilowanym -> http://visumod.freeshell.org/mp3player/mp3player_o.zip

 

Kod.

#define _WIN32_WINNT 0x500
#include <windows.h>
int main()
{
    HWND hWnd = GetConsoleWindow();
    ShowWindow( hWnd, SW_HIDE );
    System("mp3player *.mp3");
}

(floyd) #4

A, tu masz programik o nazwie muza.exe:

http://goo.gl/qvqiSU

W piku tekstowym muza.txt podajemy ścieżkę do pliku muzycznego który ma być odtwarzany.

Przerwanie odtwarzania nastąpi po naciśnięciu klawisza Esc ale można by zmienić według życzenia, tylko musiał być napisać jakiej zmiany oczekujesz.


(nolokon) #5

Chodzi mi o linijkę w *.bat, która uruchomi program *.mp3 bez wyświetlania okna, żeby grała sama muzyka.

Wiem, że można *.bat odpalić program, który to zrobi ale mi zależy żeby plik zajmował jak najmniej pamięci.


(floyd) #6

Programik który Ci zaproponowałem nie wyświetla żadnego okna czyli muzyka jest odtwarzana w tle.

W pliku *.bat podajesz tylko ścieżkę do pliku o nazwie muza.exe.

Przykładowo: Jeżeli plik muza.exe znajduje się w katalogu c:muza to w liku *.bat wpisujesz:

pushd c:\muza
start muza.exe

Sam plik muza.exe zajmuje w pamięci około 11 kilobajtów, a to chyba nie jest dużo.


(nolokon) #7
pushd c:\muza
start muza.exe

Kiedy robię taki plik wyświetla mi się “Nazwa katalogu jest nieprawidłowa”.

Jak to naprawić?


(floyd) #8

Sprawdzam na różnych Windowsach i wszędzie działa prawidłowo także w najnowszym Windows 10. Jaki Ty masz Windows?

Istnieje taki katalog u Ciebie : c:\muza ?

Jeżeli katalog jest wieloczłonowy, to nazwa musi być ujęta w cudzysłowie np.

pushd “c:\nazwa katalogu”

powinno też działać:

pushd “c:nazwa katalogu”

ściągnij też może najnowszą wersję programiku (program sam się wyłącza po odtworzeniu muzyki czy klipu wideo.

http://goo.gl/qvqiSU


(nolokon) #9

Umiem wyłączyć program po skończeniu muzyki (komenda teskkill ).

A co to katalogu muza, to o czym konkretnie mówisz?

Załóżmy, że oba pliki (start.bat i muzyka.mp3) mam na pulpicie.

Jak odpalić muzyka.mp3 tak, aby się nie wyświetliło jego okno, ale grała muzyka?

Bo trochę nie rozumiem komendy pushd.


(floyd) #10

Po pierwsze pulpit to też katalog i trzeba umieć się do niego odwoływać. Nie zaleca się umieszczania programów na pulpicie i nie powinno się tego robić z wielu względów.

Załóżmy, że jednak dla próby umieścimy wszystkie potrzebne pliki na pulpicie, to też będzie działało co sprawdziłem.

A, zatem na pulpicie umieszczamy w takim przypadku cztery pliki które  będą umieszczone w tym samym katalogu(pulpit)

  1. plik start bat a w nim polecenie: start muza.exe

  2. plik muza.exe

  3. plik muzyka.mp3

  4. plik tekstowy: melody.txt, a nim tekst z nazwą pliku muzycznego w tym przypadku:muzyka.mp3

klikamy start.bat i wszystko.

 

Plik tekstowy wprowadziłem po to aby można było zmieniać odtwarzaną muzykę i dlatego wpisujemy w nim ścieżkę do pliku dźwiękowego który ma być odtwarzany i który możemy dowolnie zmieniać.

Zalecam jednak nie umieszczać wszystkiego na pulpicie tylko utworzyć jakiś katalog na dysku o dowolnej nazwie (przykładowo podałem nazwę katalogu: muza ale może być inna nazwa i w tym katalogu umieszczamy pliki: muza.exe i melody.txt.

Plik muzyczny muzyka.mp3 nie musi być w tym katalogu, ale wówczas w pliku melody.txt należy wpisać pełną ścieżkę do tego pliku, a jeśli będzie w tym samym katalogu, to wystarczy tyko wpisać nazwę pliku muzycznego.

Plik start.bat może być w dowolnym miejscu, także na pulpicie, ale wówczas należy katalog w którym jest plik muza.exe uczynić katalogiem bieżącym poprzez polecenie: pushd c:\muza. Można też użyć starszego polecenia :CD/D c:\muza

i w tym katalogu uruchamiamy program muza.exe poprzez polecenie: start muza.exe (zamknięcie odtwarzania klawiszem ESQ)

http://www.i-slownik.pl/1205,pushd/


(nolokon) #11

Jeśli dobrze rozumiem, jest do tego potrzebny program muza.exe?

I dalej nie rozumiem znaczenia komendy pushd :confused:


(kostek135) #12

Dobrze zrozumiałeś. Żeby odtworzyć dźwięk trzeba zdekodować strumień bajtów, w którym został zapisany. Mocno wykracza poza możliwości batch.

http://ss64.com/nt/pushd.html


(floyd) #13

Oczywiście, że jest potrzebny program muza.exe bo to jest właśnie odtwarzacz muzyczny działający w tle i pobierający nazwę pliku do odtwarzania z pliku melody.txt

Jeżeli klikasz na dowolny katalog i otwierasz go, to czynisz go katalogiem bieżącym albo domyślnym. Podobnie czyni to instrukcja “pushd nazwa katalogu” albo “CD/D nazwa katalogu”.

Nawet jeśli przeciętny użytkownik nie zna pojęcia “katalog bieżący” to jednak się posługuje tym pojęciem.

Jeśli piszemy w notatniku jakiś tekst i chcemy go zapisać klikamy “zapisz jako…”, a następnie znajdujemy katalog w którym chcemy zapisać nasz plik czyli

znajdujemy nowy katalog bieżący albo zapisujemy w aktualnie otwartym katalogu bieżącym. przy zapisywaniu pliku do katalogu bieżącego wystarczy jak wiadomo podać tylko nazwę pliku.

Czy można zapisać plik do katalogu nie będącego katalogiem bieżącym? oczywiście, że tak i może warto zrobić raz taką próbę.

w tym celu otwórz notatnik: Utwórz jakiś tekst i kliknij “zapisz jako…”, a następnie wpisz jako nazwę pliku pełną ścieżkę ggzie plik ma być zapisany np.

C:\ nazwa katalogu\tekst.txt. łatwo sprawdzisz, że plik został teraz zapisany w katalogu który podałeś.

Jeżeli przy zapisie pliku klikamy “zapisz”, to plik zostanie zapisany automatycznie w katalogu bieżącym (domyślnym)

Programy które uruchamiamy też często posługują się pojęciem katalogu bieżącego i jest nim z automatu katalog w którym znajduje się program który uruchamiamy.

Jeżeli w naszym przypadku uruchamiamy program muza.exe klikając na ten program, to automatycznie katalog w którym jest ten program jest katalogiem bieżącym  i jeśli program ma odczytać nazwę pliku muzycznego, to szuka go w tym katalogu.

Jeśli jednak uruchamiamy program z pliku wsadowego który znajduje się w innym katalogu np. przez wpisanie start c:\katalog\plik.exe, to  nie będzie automatycznie zmieniony katalog bieżący, ale będzie nim w dalszym ciągu katalog w którym znajduje się plik wsadowy i aby zmienić katalog bieżący stosuje się takie polecenia jak: ‘pushd’ lub ‘CD/D’.

Jeżeli nie tworzymy katalogów bieżących, to trzeba podawać całą ścieżkę do plików które np. mają być odczytane np. przez program.

Z plikami wsadowymi jest jeszcze jeden kłopot. Czasami słabo radzą sobie z nazwami katalogów czy plików w których występują spacje.

Czasami wystarcza napisać nazwę w cudzysłowie np. “C:\nazwa katalogu\ nazwa pliku.exe”,ale też nie zawsze daje to dobry rezultat.

(pliki wsadowe powstały w czasach gdy w nazwach katalogów i czy plików nie mogły występować spacje. W plikach wsadowych należy także unikać nazw katalogów czy plików w których występują polskie litery.)


(nolokon) #14

To akurat wiem, ale nie mogę tego zastąpić na przykład wmplayer.exe ?

Albo czymś domyślnym co już jest zainstalowane na każdym komputerze.


(floyd) #15

Oczywiście, że możesz zastąpić, ale przecież na początku pisałeś, że chodzi ci o odtwarzanie w tle czyli bez okna odtwarzacza cyt.“Kiedyś widziałem program, który uruchamiał pliki *.mp3 w tle.”. No to masz taki programik który odtwarza w tle i bez instalacji, a czy będziesz z niego korzystał czy nie to Twoja sprawa.

Przy okazji proponuję jeszcze jeden eksperyment pokazujący, że samo uruchomienie programu z innego katalogu w pliku wsadowym nie zmienia katalogu bieżącego.

Niech plik start.bat i muzyka.mp3 będą na pulpicie, a pliki muza.exe i melody.txt w innym katalogu np. c:\muzyka

W pliku start bat umieszczamy instrukcję: start c:\muzyka\muza.exe, a w pliku melody.txt napis: muzyka.mp3

W takiej sytuacji katalogiem bieżącym(domyślnym) będzie w dalszym ciągu pulpit i adres pliku muzycznego będzie pobrany z pulpitu, a odtwarzanie będzie prawidłowe co łatwo sprawdzić.

Przy okazji jeszcze taka jedna uwaga: W Windowsie wiele czynności jak np. przechodzenie do innego katalogu wykonujemy przez klikanie na odpowiednie ikony i jest to naturalne. W językach skryptowych gdzie mamy tylko konsolę i żadnych ikon trzeba wszystko napisać. Jeżeli jednak choć trochę interesujesz się programowaniem to warto zdawać sobie z tego sprawę. Podobny problem mają też co którzy próbują przejść z Windowsa na Linuksa gdzie też trzeba wiele komend pisać w konsoli i co sprawia trochę kłopotu, ale wybór należy do nas.


(nolokon) #16

Spróbowałem to zrobić na win8 i nie działa (pobierałem też Twój program i to samo).

Lecz na drugim komputerze (win7) już działa.

Co z tym zrobić?


(floyd) #17

Rzeczywiście nie działało pod win8. :frowning:

Tak to jest z programowaniem, że trzeba ciągle testować na różnych systemach.

Jak po raz pierwszy utworzyłem ten programik, to go przetestowałem na różnych systemach i działał. Potem dokonałem małej zmiany i już nie testowałem ponownie na win8 zakładając, że jak początkowo działał, to i teraz będzie, a to jak się okazało nie musi być prawda.

Będziesz musiał ponownie go ściągnąć i mam nadzieję, że teraz będzie działał poprawnie także pod win8.


(nolokon) #18

Świetne! Wielkie dzięki za programik i za chęć tłumaczenia mi komend :slight_smile:


(Necron PL) #19

Witajcie, @floyd podałeś ciakawy program jest bardzo przydatny :slight_smile: lecz czy mógłbyś zmienić kończenie odtwarzania klawiszem Esc na dowolny ? napisałem program w Batch i w gdy wchodzę w jakąś etykietę odtwarza się muzyka, i zależy mi na tym, że jak kliknę dowolny klawisz to program zmieni etykietę i muza.exe zakończy odtwarzanie dźwięku :slight_smile: byłbym badzo wdzięczny.

 

Pozdrawiam :D 


(dawcioxdcsgo) #20

Na Win 10 mi nie działa:(.