中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-25 11:49
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求教]一个涉及特殊字符的动态生成文件的问题 查看 1,033 回复 2
楼 主 [求教]一个涉及特殊字符的动态生成文件的问题 发表于 2006-06-24 16:59 ·  中国 江苏 苏州 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
情况是这样的。
上次在大侠们的教导下学会了不少DOS应用,很有乐趣。

不过这次遇到了一个棘手的问题。

首先说明缘由:
由于网上很多连续剧是双语的,所以需要分离声道,具体是先分离出音轨,然后用.avs语言分离音轨中的右声道,然后合并。主要麻烦在avs上。假设吧,连续剧有20集,就要生成20个avs.
名字依次为01.avs、02.avs、....、20.avs。

avs的内容为(假设第16集)
video =DirectShowSource("E:\潮爆大状\16.000",fps=24)
return GetRightChannel(video)

困难有两点:
1:生成的文件名中含有变化。
2:"\符号。

我草稿如下:
-----------------
setlocal EnableDelayedExpansion
set m=
set P=
set avs=.avs
set rtn=return GetRightChannel(video)
:::此处填入地址,注意末位\号.
set addpath=video =DirectShowSource("E:\潮爆大状\
:::此处填入FPS.
set fpss=.000",fps=25)
:::此处填入起始,步进,末尾中的"末尾".
set fg=20

for /L %%i in (1,1,%fg%) do (
set !m!=%addpath%%%i%fpss%>%%~ni%avs%
echo %rtn% >>%%~ni%avs%
)

首先字符串相加不知道如何操作,用+好像没用?写成%addpath%%%i%fpss%反而可以?
其次%%~ni%avs%文件也无法生成,或者生成但内容不对?


各位经验丰富的大侠,我初学DOS,是在不是很会,这种情况应该如何实现?
2 发表于 2006-06-28 19:32 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
虾米?sos
3 发表于 2006-07-10 15:20 ·  中国 江苏 苏州 吴江区 电信
初级用户
积分 100
发帖 39
注册 2005-10-27 22:50
20年会员
UID 44177
状态 离线
求人不如求己,自己搞定了
@echo off
setlocal EnableDelayedExpansion


::此处填入地址.
set addpath=E:\下载文件夹\BT下载

::此处填入FPS.
set fpss=25

::此处填入步进的末尾.
set fg=13

cls

if /i %fg% GTR 9 goto up
goto low

:up

for /L %%i in (1,1,9) do @echo video =DirectShowSource("%addpath%\0%%i.000",fps=%fpss%)>"0"%%~ni".avs"
for /L %%i in (1,1,9) do @echo return GetRightChannel(video)>>"0"%%~ni".avs"
for /L %%i in (10,1,%fg%) do @echo video =DirectShowSource("%addpath%\%%i.000",fps=%fpss%)>%%~ni".avs"
for /L %%i in (10,1,%fg%) do @echo return GetRightChannel(video)>>%%~ni".avs"
goto :eof


:low

for /L %%i in (1,1,%fg%) do @echo video =DirectShowSource("%addpath%\%%i.000",fps=%fpss%)>%%~ni".avs"
for /L %%i in (1,1,%fg%) do @echo return GetRightChannel(video)>>%%~ni".avs"
goto :eof
论坛跳转: