[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理调用音频格式文件如何跳出循环

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%i in (test1.txt) do (
  4.   set str=%%i
  5.   set str1=!str:%str%~0,1!
  6.   set str2=!str:%str%~1,2!
  7.   call :loop
  8. )
  9. pause
  10. exit
  11. :loop
  12. copy "C:\Users\Administrator\Desktop\test\!str1!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  13. copy "C:\Users\Administrator\Desktop\test\!str2!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  14. copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  15. copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  16. 恭喜机号为.wav
  17. "!str1!.wav"  "!str2!.wav"
  18. 幸运奖.wav
  19. del "!str1!.wav"
  20. del "!str2!.wav"
  21. del "恭喜机号为.wav"
  22. del "幸运奖.wav"
  23. pause
复制代码
假设test1.txt里的内容是8,35,86。数字是随意的100以内的数,
系统设定的播放音频视频文件是暴风影音,由于在播放数字.wav时,会一直顺序播放完,所以采用这个笨办法,
把所有音频文件放另外一个文件夹,批处理在运行时拷贝过来,念完一次就删除,这样就能达到效果,但是遇到
了一个问题,这个批处理在运行时,会念完一遍:恭喜机号为8的朋友获得幸运奖,接着念:8的朋友获得幸运奖,
接着念:的朋友获得幸运奖。然后才到35,如此一次,再到86,请教如何让他只念一次。
努力学习,努力挣分

test1.txt里面的数字改成一行一个:
8
35
86

代码改成这样:
  1. @echo off
  2. for /f %%i in (test1.txt) do (
  3.     call :loop %%i
  4. )
  5. pause
  6. exit
  7. :loop
  8. copy "C:\Users\Administrator\Desktop\test\%1.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  9. copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  10. copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  11. 恭喜机号为.wav
  12. %1.wav
  13. 幸运奖.wav
  14. del /f /q 恭喜机号为.wav %1.wav 幸运奖.wav
  15. pause
复制代码

TOP

谢谢,不行。怪我没说清楚。
首先音频文件只有0,1,2,3,4,5,6,7,8,9这几个,没有35或者86.所以35要拆分成3和5,86要拆分成8和6,另外我的test1.txt里的数字就是一行一个。有且只有3个。
另外你的代码也要出现我说的情况,难道是你默认播放音频不是暴风影音的关系吗?
努力学习,努力挣分

TOP

回复 3# sgaizxt001
  1. @echo off
  2. for /f %%i in (test1.txt) do (
  3.     call :loop %%i
  4. )
  5. pause
  6. exit
  7. :loop
  8. pushd "C:\Users\Administrator\Desktop\新建文件夹"
  9. copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  10. 恭喜机号为.wav
  11. del /f /q *.wav
  12. copy "C:\Users\Administrator\Desktop\test\%1.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  13. %1.wav
  14. del /f /q *.wav
  15. copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  16. 幸运奖.wav
  17. del /f /q *.wav
  18. popd
  19. pause
复制代码

TOP

想了个笨办法
  1. @echo on
  2. setlocal enabledelayedexpansion
  3. for /f %%i in (test1.txt) do (
  4.   set str=%%i
  5.   set str1=!str:%str%~0,1!
  6.   set str2=!str:%str%~1,2!
  7.   echo !str1! !str2!
  8.   ;call :loop
  9. )
  10. pause
  11. exit
  12. :loop
  13. copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  14. if !errorlevel!==0  "恭喜机号为.wav"
  15. copy "C:\Users\Administrator\Desktop\test\!str1!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  16. "!str1!.wav"
  17. del "!str1!.wav"
  18. copy "C:\Users\Administrator\Desktop\test\!str2!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  19. "!str2!.wav"
  20. copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
  21. 幸运奖.wav
  22. del "!str2!.wav"
  23. del "恭喜机号为.wav"
  24. del "幸运奖.wav"
  25. taskkill /im StormPlayer.exe
  26. pause
复制代码
加了个errorlevel判断,这样就可以跳出来只读一次了,在!str1!那里添加del是为了防止比如64这样的暴风读6,4,6。另外taskkill命令成功发送了,但是暴风就是不会自己结束。烦
努力学习,努力挣分

TOP

回复 5# sgaizxt001


    taskkill /f /im

TOP

本帖最后由 bjc5233 于 2014-11-1 12:39 编辑

不知道我是不是理解得正确:【从文本test1.txt中随机取一行,然后播放】
你把所有的音频都放一起,不用每次都复制
gplay.exe下载地址:http://pan.baidu.com/s/1o6NsmgE
  1. @echo off& setlocal enabledelayedexpansion
  2. ::从test1.txt中随机取一行,然后播放, gplay.exe播完自己会关闭
  3. ::winNum是中奖号码
  4. for /f "delims=" %%i in (test1.txt) do (
  5.     set /a lineNum+=1
  6.     set line_!lineNum!=%%i
  7. )
  8. set /a winLineNum=!random!%%lineNum+1
  9. set winNum=!line_%winLineNum%!
  10. gplay.exe 恭喜机号为.wav !winNum:~0,1!.wav !winNum:~1,1!.wav 幸运奖.wav
  11. pause
复制代码

TOP

返回列表