标题: [文件操作] 批处理调用音频格式文件如何跳出循环 [打印本页]
作者: sgaizxt001 时间: 2014-10-31 13:41 标题: 批处理调用音频格式文件如何跳出循环
- @echo off
- setlocal enabledelayedexpansion
- for /f %%i in (test1.txt) do (
- set str=%%i
- set str1=!str:%str%~0,1!
- set str2=!str:%str%~1,2!
- call :loop
- )
- pause
- exit
-
- :loop
- copy "C:\Users\Administrator\Desktop\test\!str1!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- copy "C:\Users\Administrator\Desktop\test\!str2!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- 恭喜机号为.wav
- "!str1!.wav" "!str2!.wav"
- 幸运奖.wav
- del "!str1!.wav"
- del "!str2!.wav"
- del "恭喜机号为.wav"
- del "幸运奖.wav"
- pause
复制代码
假设test1.txt里的内容是8,35,86。数字是随意的100以内的数,
系统设定的播放音频视频文件是暴风影音,由于在播放数字.wav时,会一直顺序播放完,所以采用这个笨办法,
把所有音频文件放另外一个文件夹,批处理在运行时拷贝过来,念完一次就删除,这样就能达到效果,但是遇到
了一个问题,这个批处理在运行时,会念完一遍:恭喜机号为8的朋友获得幸运奖,接着念:8的朋友获得幸运奖,
接着念:的朋友获得幸运奖。然后才到35,如此一次,再到86,请教如何让他只念一次。
作者: DAIC 时间: 2014-10-31 14:12
test1.txt里面的数字改成一行一个:
8
35
86
代码改成这样:- @echo off
- for /f %%i in (test1.txt) do (
- call :loop %%i
- )
- pause
- exit
-
- :loop
- copy "C:\Users\Administrator\Desktop\test\%1.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- 恭喜机号为.wav
- %1.wav
- 幸运奖.wav
- del /f /q 恭喜机号为.wav %1.wav 幸运奖.wav
- pause
复制代码
作者: sgaizxt001 时间: 2014-10-31 14:31
谢谢,不行。怪我没说清楚。
首先音频文件只有0,1,2,3,4,5,6,7,8,9这几个,没有35或者86.所以35要拆分成3和5,86要拆分成8和6,另外我的test1.txt里的数字就是一行一个。有且只有3个。
另外你的代码也要出现我说的情况,难道是你默认播放音频不是暴风影音的关系吗?
作者: DAIC 时间: 2014-10-31 15:06
回复 3# sgaizxt001 - @echo off
- for /f %%i in (test1.txt) do (
- call :loop %%i
- )
- pause
- exit
-
- :loop
- pushd "C:\Users\Administrator\Desktop\新建文件夹"
- copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- 恭喜机号为.wav
- del /f /q *.wav
- copy "C:\Users\Administrator\Desktop\test\%1.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- %1.wav
- del /f /q *.wav
- copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- 幸运奖.wav
- del /f /q *.wav
- popd
- pause
复制代码
作者: sgaizxt001 时间: 2014-10-31 15:08
想了个笨办法- @echo on
- setlocal enabledelayedexpansion
- for /f %%i in (test1.txt) do (
- set str=%%i
- set str1=!str:%str%~0,1!
- set str2=!str:%str%~1,2!
- echo !str1! !str2!
- ;call :loop
- )
- pause
- exit
-
- :loop
- copy "C:\Users\Administrator\Desktop\test\恭喜机号为.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- if !errorlevel!==0 "恭喜机号为.wav"
-
- copy "C:\Users\Administrator\Desktop\test\!str1!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- "!str1!.wav"
- del "!str1!.wav"
-
- copy "C:\Users\Administrator\Desktop\test\!str2!.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- "!str2!.wav"
-
- copy "C:\Users\Administrator\Desktop\test\幸运奖.wav" "C:\Users\Administrator\Desktop\新建文件夹\"
- 幸运奖.wav
-
- del "!str2!.wav"
- del "恭喜机号为.wav"
- del "幸运奖.wav"
- taskkill /im StormPlayer.exe
- pause
复制代码
加了个errorlevel判断,这样就可以跳出来只读一次了,在!str1!那里添加del是为了防止比如64这样的暴风读6,4,6。另外taskkill命令成功发送了,但是暴风就是不会自己结束。烦
作者: DAIC 时间: 2014-10-31 19:51
回复 5# sgaizxt001
taskkill /f /im
作者: bjc5233 时间: 2014-11-1 12:37
本帖最后由 bjc5233 于 2014-11-1 12:39 编辑
不知道我是不是理解得正确:【从文本test1.txt中随机取一行,然后播放】
你把所有的音频都放一起,不用每次都复制
gplay.exe下载地址:http://pan.baidu.com/s/1o6NsmgE- @echo off& setlocal enabledelayedexpansion
-
- ::从test1.txt中随机取一行,然后播放, gplay.exe播完自己会关闭
- ::winNum是中奖号码
- for /f "delims=" %%i in (test1.txt) do (
- set /a lineNum+=1
- set line_!lineNum!=%%i
- )
- set /a winLineNum=!random!%%lineNum+1
- set winNum=!line_%winLineNum%!
- gplay.exe 恭喜机号为.wav !winNum:~0,1!.wav !winNum:~1,1!.wav 幸运奖.wav
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |