用批处理文件播放隐形音乐?

时间:2014-04-26 16:34:11

标签: batch-file audio hidden

我已经看过一个cfew线程,它说明如何播放音乐,当它以start /min开头时播放最小化,以及创建VBS脚本以最小化运行音频的音乐。但无论我尝试将音频最小化运行的方式,都会出现在屏幕上。

另外,如果我尝试start /minstart /max,我会得到相同的结果。

有谁知道如何才能让事情最小化?

13 个答案:

答案 0 :(得分:15)

@echo off
set "file=track12.mp3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
  echo Sound.URL = "%file%"
  echo Sound.Controls.play
  echo do while Sound.currentmedia.duration = 0
  echo wscript.sleep 100
  echo loop
  echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs
start /min sound.vbs

只需使用音频文件的名称更改track12.mp3

答案 1 :(得分:2)

这是来自另一个答案(也是我)的复制/粘贴,其中包含此问题作为其中一个点(播放没有可见应用程序的wav文件)的可能答案。

  

对于播放声音部分,据我所知,没有办法   直接从命令行播放自定义wav而不生成   另一个过程。通常的工具是vlc,wmplayer,一个vbs文件   实例化wmplayer ocx,录音机,powershell,......这一切   以前的问题记录了选项(只是第一个)   stackoverflow中的here或   超级用户here

     

如果您可以访问某些C,则扩展其中一个备选方案   编译器(使用mingw测试)此代码将生成一个控制台工具   调用PlaySound API函数将第一个参数传递为   要播放的文件。

#include <windows.h>
int main(int argc, char **argv)
{
    if (argc < 2) return 1;
    if (!PlaySound( 
            argv[1], 
            NULL, 
            SND_FILENAME | SND_NODEFAULT | SND_SYNC
       )
    ) return 2;
    return 0;
}
  

根据您的配置,您需要包含参考   到Winmm库到链接器。

答案 2 :(得分:2)

CreateObject("Wscript.Shell").Run "wmplayer /play /close ""Your file location here""", 0, False

答案 3 :(得分:2)

问题的提问者显然很晚但谁知道呢?其他人可能会看。因此,我将重申Tony BD从14年4月开始的答案,因为有人抱怨它只是一个代码答案我会添加一些解释,而且实际上很少需要。

1。)打开Windows记事本

2。)将Tony BD的代码复制到记事本中

3。)用你想要播放的音乐文件的完整路径替换'你的文件位置'。

4。)在记事本菜单中选择文件|另存为。 。

5.。)选择一个位置并为文件命名,但要确保不使用标准的.txt文件类型,而是给它一个.vbs结尾。

6.。)关闭记事本

7。)点击您刚制作的vbs文件,您的音乐文件将开始播放,屏幕上绝对没有显示任何内容。

代码中的0参数使WMP能够在不可见的窗口中打开。如果将0更改为1,您将看到WMP的图形界面。

显然,这仅适用于Windows用户,但对于他们来说,这是解决问题的最佳和最简单的方法。

答案 4 :(得分:1)

我使用的是:适用于Windows的VLC(免费下载)。适用于XP到10。

使用此

"c:\Program Files (x86)\videolan\vlc\vlc.exe" --qt-start-minimized --play-and-exit 
"c:\Program Files (x86)\videolan\vlc\Windows Exclamation.wav"

路径和引号仅作为示例;肉是

vlc --qt-start-minimized --play-and-exit soundFilename

答案 5 :(得分:0)

如果你可以使用第三方实用程序,那么wv_player是一个免费的媒体播放器,它有一个简单的gui,并且有命令行开关来播放没有接口的媒体文件。

答案 6 :(得分:0)

批量音乐播放器.bat

@echo off
setlocal enabledelayedexpansion
Set vbsfile=%temp%\Intro.vbs
Set URL=http://hackoo.alwaysdata.net/Intro_DJ.mp3
Call:Play %URL% %vbsfile%
Start %vbsfile%
Set MyFile=%~f0
Set ShorcutName=DJ Batch Music Player
(
echo Call Shortcut("%MyFile%","%ShorcutName%"^)
echo ^'**********************************************************************************************^)
echo Sub Shortcut(CheminApplication,Nom^)
echo    Dim objShell,DesktopPath,objShortCut,MyTab
echo    Set objShell = CreateObject("WScript.Shell"^)
echo    MyTab = Split(CheminApplication,"\"^)
echo    If Nom = "" Then
echo    Nom = MyTab(UBound(MyTab^)^)
echo    End if
echo    DesktopPath = objShell.SpecialFolders("Desktop"^)
echo    Set objShortCut = objShell.CreateShortcut(DesktopPath ^& "\" ^& Nom ^& ".lnk"^)
echo    objShortCut.TargetPath = Dblquote(CheminApplication^)
echo    ObjShortCut.IconLocation = "Winver.exe,0"
echo    objShortCut.Save
echo End Sub
echo ^'**********************************************************************************************
echo ^'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo    DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo ^'**********************************************************************************************
) > %temp%\Shortcutme.vbs
Start /Wait %temp%\Shortcutme.vbs
Del %temp%\Shortcutme.vbs
::****************************************************************************************************
Title DJ Batch Music Player by Hackoo 2015
:menuLOOP
Color 0A & Mode con cols=78 lines=25
echo(
echo        ===============================================================
echo        "/  |  /  |                    /  |                          ";
echo        "$$ |  $$ |  ______    _______ $$ |   __   ______    ______  ";
echo        "$$ |__$$ | /      \  /       |$$ |  /  | /      \  /      \ ";
echo        "$$    $$ | $$$$$$  |/$$$$$$$/ $$ |_/$$/ /$$$$$$  |/$$$$$$  |";
echo        "$$$$$$$$ | /    $$ |$$ |      $$   $$<  $$ |  $$ |$$ |  $$ |";
echo        "$$ |  $$ |/$$$$$$$ |$$ \_____ $$$$$$  \ $$ \__$$ |$$ \__$$ |";
echo        "$$ |  $$ |$$    $$ |$$       |$$ | $$  |$$    $$/ $$    $$/ ";
echo        "$$/   $$/  $$$$$$$/  $$$$$$$/ $$/   $$/  $$$$$$/   $$$$$$/  ";
echo        "                                                            ";
echo        "                                                            ";
echo(       =============================Menu==============================
echo(
for /f "tokens=2* delims=_ " %%A in ('"findstr /b /c:":menu_" "%~f0""') do echo                         %%A  %%B
echo(
echo(       ===============================================================
set choice=
echo( & set /p choice=Make a choice or hit ENTER to quit: || GOTO :EOF
echo( & call :menu_[%choice%]
GOTO:menuLOOP
::********************************************************************************************
:menu_[1] Play DJ Buzz Radio
cls & color 0A
Call:SkipLine 10
Call:Tab 3
echo %x% Please Wait for a while .. Launching DJ Buzz Radio ...
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set vbsfile=%temp%\DJBuzzRadio.vbs
Set URL=http://www.chocradios.ch/djbuzzradio_windows.mp3.asx
Call:Play %URL% %vbsfile%
Start %vbsfile%
TimeOut /T 1 /NoBreak>nul
GOTO:menuLOOP
::********************************************************************************************
:menu_[2] Play David Guetta Mix
cls & color 0A
Call:SkipLine 10
Call:Tab 3
echo %x% Please Wait for a while .. Launching David Guetta Mix ...
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set vbsfile=%temp%\David_Guetta_Miami.vbs
Set URL=http://hackoo.alwaysdata.net/David_Guetta_Miami_2014.mp3
Call:Play %URL% %vbsfile%
Start %vbsfile%
TimeOut /T 1 /NoBreak>nul
GOTO:menuLOOP
::********************************************************************************************
:menu_[3] Play Ibiza Mix
cls & color 0A
Call:SkipLine 10
Call:Tab 3
echo %x% Please Wait for a while .. Launching Ibiza Mix ...
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set vbsfile=%temp%\IbizaMix.vbs
Set URL=http://hackoo.alwaysdata.net/IbizaMix.mp3
Call:Play %URL% %vbsfile%
Start %vbsfile%
TimeOut /T 1 /NoBreak>nul
GOTO:menuLOOP
::********************************************************************************************
:menu_[4] Play Avicii Mega Mix
cls & color 0A
Call:SkipLine 10
Call:Tab 3
echo %x% Please Wait for a while .. Launching Avicii Megamix ...
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set vbsfile=%temp%\IbizaMix.vbs
Set URL="http://hackoo.alwaysdata.net/Best of Avicii Megamix 2014.mp3"
Call:Play %URL% %vbsfile%
Start %vbsfile%
TimeOut /T 1 /NoBreak>nul
GOTO:menuLOOP
::********************************************************************************************
:menu_[5] Play Mega Mix 90
cls & color 0A
Call:SkipLine 10
Call:Tab 3
echo %x% Please Wait for a while .. Launching Mega Mix 90 ...
Taskkill /IM "wscript.exe" /F >nul 2>&1
Set vbsfile=%temp%\IbizaMix.vbs
Set URL="http://hackoo.alwaysdata.net/Megamix 90.mp3"
Call:Play %URL% %vbsfile%
Start %vbsfile%
TimeOut /T 1 /NoBreak>nul
GOTO:menuLOOP
::********************************************************************************************
:menu_[6] Stop the music
cls & color 0C
Call:SkipLine 10
Call:Tab 3
echo  %x% Please Wait for a while .. Stopping the music ...
Taskkill /IM "wscript.exe" /F >nul 2>&1
TimeOut /T 1 /NoBreak>nul
GOTO:menuLOOP
::********************************************************************************************
:Play
(
echo Play "%~1"
echo Sub Play(URL^)
echo    Dim Sound
echo    Set Sound = CreateObject("WMPlayer.OCX"^)
echo    Sound.URL = URL
echo    Sound.settings.volume = 100
echo    Sound.Controls.play
echo    do while Sound.currentmedia.duration = 0
echo        wscript.sleep 100
echo    loop
echo    wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
echo End Sub
)>%~2
::*********************************************************************************************
:Tab
set "x="
For /L %%I In (1,1,%1) Do Set "x=!x!    "
REM                                  ^-- this is a TAB
goto :eof
::*********************************************************************************************
:SkipLine
    For /L %%I In (1,1,%1) Do Echo(
    Goto:Eof
:EOF
EXIT
::********************************************************************************************* 

答案 7 :(得分:0)

大多数建议是MediaPlayer或相对ActiveX object。对于没有安装MediaPlayer的人来说这可能是个问题(例如,Windows XP需要进行真正的身份验证以便安装它),并且它可以在不同的Windows版本上采取不同的行为(例如,某些Windows版本自动关闭不能按预期工作)。 Here's my implementation(不创建临时文件)。例如:

call mediaRunner.bat "C:\Windows\Media\Ring05.wav"

在每台Windows机器上都安装了SP ActiveX个对象,这些对象能够运行.wav个文件(没有mp3等等)。这是one script。示例:

call spPlayer.bat "C:\Windows\Media\Ring05.wav"

我们还有HTA / InternetExplorer应用程序及其bgsound代码。Which also allows you to control the volume of the played song

call htaplayer.bat "C:\Windows\Media\Ring05.wav" -1000

答案 8 :(得分:0)

只需使用Sounder.exe

示例您的命令行将是 发声器MyWaveFile.wav

获取

http://www.elifulkerson.com/projects/commandline-wav-player.php

答案 9 :(得分:0)

对于mac来说。 。

afplay (your music file name here)

注意:它必须位于iTunes音乐的iTunes文件夹中。

答案 10 :(得分:0)

昨天我遇到了这个问题,当时我正在研究我在另一个主题中提出的解决方案所遇到的问题,因为它打开了Windows Media Player。从MC ND提供的C代码开始,我将一个稍微更精致和现代(宽字符)的版本放在一起,我刚刚在GitHub

上的三条BSD许可下发布了该版本。

您真正需要运行它的所有内容都在SoundOff_Binary.ZIP中,您可以单独下载。如果您也想要源代码,请随意将存储库克隆到您的本地git。如果您这样做,请在尝试使用之前花些时间阅读README.md文件。

答案 11 :(得分:0)

这是一种用于在批处理程序中播放声音文件,同时将所有内容隐藏的完整解决方案,其固有的功能是在cmd窗口关闭时停止音乐。利用vbs脚本和辅助批处理程序,它们分别是从初始脚本创建的。

对于使用vb播放具有受控设置的音乐,它使用与其他答案类似的方法。

@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

答案 12 :(得分:0)

如果有人需要关闭音乐然后再播放。
试试这个:

Taskkill /IM "wscript.exe" /F>nul 2>&1

(如果您使用sound.vbs)