所以我尝试使用forfiles /M DX* /P ..\fsb /C "cmd /c cd ..\extracted && fsb2wav @path"
从.fsb文件中提取.wav文件
但是我只需要提取格式为DX * .fsb且没有DX _FR.fsb或DX _DE.fsb的文件,其中*任意数量的字母数字字符。
有没有办法做到这一点?我一直在使用/ M选项,但它似乎不喜欢正则表达式。
答案 0 :(得分:1)
通配符*
代表文件/路径名中有效的任意数量的字符(?
代表单个有效字符),因此您需要自己进行过滤。
对于你手头的任务,我不会在这里使用forfiles
,因为它很慢,因为它为每次迭代实例都是一个新的cmd
实例,并且应用额外的过滤器会更复杂。我想要的方法是for /F
循环,用于解析用dir /B
管道传输的findstr
命令的输出:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem Define constants here:
set "WORKDIR=..\extracted"
set "SEEKDIR=..\fsb"
set "DIRFILT=DX*.fsb"
set "REGEXPR=^DX[0-9A-Z]*.fsb$"
pushd "%SEEKDIR%" && (
for /F "eol=| delims=" %%F in ('
dir /B "%DIRFILT%" ^| ^
findstr /I /R "%REGEXPR%"
') do (
pushd "%WORKDIR%" && (
ECHO fsb2wav "%%~fF"
popd
)
)
popd
)
endlocal
exit /B
测试完脚本后,删除大写ECHO
以实际执行fsb2wav
工具。