Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Play invisible music with batch file?

I've seen a cfew threads that say how to play music with the play minimized when it starts with start /min, as well as one that creates a VBS script to run the audio minimized. But no matter which way I try to get audio to run minimized, it appears on screen.

Also, if I try start /min or start /max I'll get the same result.

Does anyone know how I can get something to start minimized?

like image 733
Pretzel Avatar asked Apr 26 '14 16:04

Pretzel


People also ask

How do I play music in a batch file?

The Windows Media Player can run from the command line or a batch file to play sound files. To ensure audio files are played using this application, you need to include the "wmplayer" after the start command.

How do I play an audio file?

To play an audio file, click File, select Open, and browse to the location of the file. Or, you can drag the file to the RealPlayer window. You can also double-click the file to start playing the file immediately. However, if the audio file is associated with a different program, it may not open in RealPlayer.


2 Answers

Obviously very late for the asker of the question but who knows? Someone else may look by. So I'll just reiterate Tony BD's answer from April '14, and since someone complained about it being a code only answer I'll add a little explanation and really very little is required.

1.) Open Windows Notepad

2.) Copy Tony BD's code into Notepad

3.) Substitute 'Your file location here' with the full path to the music file you want to play.

4.) In Notepad menu choose File|Save as . .

5.) Choose a location and give the file a name but ensure that instead of the standard .txt file type you give it a .vbs ending.

6.) Close Notepad

7.) Click on the vbs file you just made and your music file will start to play showing absolutely nothing on the screen.

The 0 parameter in the code enables WMP to open in an invisible window. If you change the 0 to a 1 you will see WMP's graphical interface.

Obviously this is only available for Windows users but for them it's the best and simplest solution to the problem.

like image 166
Thuba Avatar answered Oct 04 '22 08:10

Thuba


This is an all in one solution for playing sound files in a batch program while keeping everything hidden, with the innate capacity to stop the music when the cmd window is closed. Utilizes vbs scripts and secondary batch programs, each created from the initial script.

It uses similar approaches to other answers regarding the use of vbs to play music with controlled settings.

@ECHO OFF & CD "%~dp0"
    Set "ProgDir=%~dp0"
    If not exist "%ProgDir%Sounds" MD "%ProgDir%Sounds"
    Set "Sounds=%ProgDir%Sounds"
    Set "Player=%Sounds%\BatchMusicPlayer.bat"
    Set "MusicStopper=%Sounds%\StopMusic.bat"
    Set "Monitor=%Sounds%\BatchMonitor.vbs"
    If not Exist "%Player%" Call :makeplayer
    If not Exist "%MusicStopper%" Call :makestopper
    If not Exist "%Monitor%" Call :makemonitor

Start "" "%Monitor%"

:main
REM play directly by calling this batch using these parameters: <full track path> <vol 0-100> <Loop true / false>
    If not "%~3"=="" If Exist "%~1" (
        For %%A in (true false) do If /I "%%A" == "%~3" (
            Call "%Player%" "%~1" %~2 %~3
            Exit /B
        )
    )
REM autoplay any song or sound dropped on the batch or when called without additional parameters.
    If Exist "%~1" If "%~2"=="" (Set "track=%~1" & Set "vol=80" & Set "Loop_TF=false" & Goto :Launch)

REM manually enter trackpath, volume and true / false value for repeating sound.        

    )   
    cls
    Set track=
    Set /p "track=[Full track path :>"
    IF NOT DEFINED track Goto :main
    For %%A in (quit q exit e killmusic stop) do IF /I "%track%" == "%%A" Goto :end
    IF /I NOT EXIST "%track%" Goto :main

:volume
    set vol=
    Set /p "vol=[Volume :>"
    For %%A in ("%vol%") do (
        For %%B in (q quit e exit c cancel s stop) do IF /I "%%~A" == "%%B" Goto :main
        For /L %%C in (1,1,100) do If "%%~A"=="%%C" Goto :repeat
    )
Goto :volume

:repeat
    Set Loop_TF=
    Set /p "Loop_TF=[Repeat ('true' or 'false') :>"
    IF NOT DEFINED Loop_TF Goto repeat
    For %%A in ("%Loop_TF%") do (
        For %%B in (true false) do IF /I "%%~A" == "%%B" Goto :Launch
        For %%C in (q quit e exit c cancel s stop) do IF /I "%%~A" == "%%C" Goto :main
    )
Goto :repeat

:Launch
    CALL "%player%" "%track%" %vol% %Loop_TF%
REM Exit /B
    pause
Goto :main

:makeplayer
(
    Echo.@ECHO OFF
    Echo.Set "MusicPath=%%~1"
    Echo.Set "vol=%%~2"
    Echo.Set "Loop_TF=%%~3"
REM Change to the Directory you want to create the Music Launcher in.
    Echo.PUSHD %%sounds%%
REM Ensure no Conflict with the Previous Script.
    Echo.IF exist PlayMusic.vbs ^(
    Echo.DEL PlayMusic.vbs
    Echo.^)
REM Creates a vbs Script to Launch the music (Occurs without any visual indication or prompting)
    Echo.^( echo Set Sound = CreateObject^("WMPlayer.OCX.7"^^^)
    Echo.echo Sound.URL = "%%MusicPath%%"
    Echo.echo Sound.settings.volume = %%vol%%
    Echo.echo Sound.settings.setMode "loop", %%Loop_TF%%
    Echo.echo Sound.Controls.play
    Echo.echo While Sound.playState ^^^<^^^> 1
    Echo.echo      WScript.Sleep 100
    Echo.echo Wend
    Echo.^)^>PlayMusic.vbs
    Echo.start /min PlayMusic.vbs
::: Return to the Previous Directory
    Echo.POPD
::: Exit the Launcher and return to Previous batch program.
    Echo.Goto :EOF
)>%Player%
Exit /B

:makemonitor
(
ECHO Set objWMIService = GetObject ("winmgmts:"^)
ECHO Set proc = objWMIService.ExecQuery("select * from Win32_Process Where Name='cmd.exe'"^)
ECHO DO while proc.count ^> 0
ECHO Set proc = objWMIService.ExecQuery("select * from Win32_Process Where Name='cmd.exe'"^)
ECHO if proc.count ^< 1 then exit do
ECHO wscript.sleep 1500
ECHO loop
ECHO Set WshShell=createobject("wscript.shell"^)
ECHO WshShell.run "%MusicStopper%", 0, true
)>"%Monitor%"
Exit /B

:makestopper
(
Echo.@ECHO OFF
Echo.taskkill /pid WScript.exe /f /t ^>nul
Echo.Goto :EOF
)>%MusicStopper%
Exit /B

:end
exit
like image 23
T3RR0R Avatar answered Oct 04 '22 08:10

T3RR0R