在多个子文件夹中用file.new替换file.old

时间:2019-03-12 06:17:57

标签: batch-file

我正在尝试用程序要求的更新格式替换大约400个子文件夹中的400多个音频文件。每个位置上的文件都是相同的,但是它们对xml文件的要求如何。我找到了几篇类似的文章,替换了我认为可以满足我需要的Replacing a file into multiple folders/subdirectories这样的多个子目录中的文件。

我想在SFX'x文件夹中找到所有AR33.mp3文件,并替换为新的必需AR33.wem。我的问题如下:

FOR /R C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\GoldenEye\SFX %%I IN (AR33.mp3) DO echo COPY /Y C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\sfxwems\AR33.wem %%~fI 

这是相反的操作,并将我要覆盖的文件ar33.mp3复制到所有不应存在的每个文件夹的文件夹结构中。但是它确实说每个条目后复制1个文件。

(AR33)创建无扩展名的副本。添加(* AR33.mp3)不会执行任何操作,与(* AR33.mp3 *)一样也不会执行任何操作,即使在控制台中指出“复制了1个项目”也是如此。在这一点上,我正在尽我所能使它随机工作。更改COPY以替换为无效开关-/ y。我使用错误的“脚本”来做我想要的吗?因为即使将.mp3行替换为.wem之后,即使将AR33.mp3之一更改为.wem都看不到任何变化。我认为我需要修复其搜索内容和复制内容。

更新的蝙蝠:

FOR /R "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\GoldenEye\SFX\" %%I IN (AR33.mp3) DO echo COPY /Y "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\sfxwems\AR33.wem" "%%~fI"

输出样本:

C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted>echo COPY /Y "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\sfxwems\AR33.wem" "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\GoldenEye\SFX\AAC0\ShipName__PASC045\isPlayer__False\AR33.mp3"
COPY /Y "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\sfxwems\AR33.wem" "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\GoldenEye\SFX\AAC0\ShipName__PASC045\isPlayer__False\AR33.mp3"

1 个答案:

答案 0 :(得分:0)

您也想将.mp3替换为.wem。现在,您只需复制.wem文件并使用.mp3扩展名将其命名。因此,我们可以只重命名.mp3,然后将.wem文件复制到其中。:

@echo off
for /R "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\GoldenEye\SFX\" %%I in (*AR33.mp3) do (
    echo ren "%%~fI" "%%~nI.wem"
    echo copy /Y "C:\Users\trevo\Desktop\ProjectGoldenEYE\811converted\sfxwems\AR33.wem" "%%~dpnI.wem"
)

在继续操作之前,请先记录注释。上面的代码只会回显结果,一旦您满意它想要的结果,就只能从代码块的两个字符串中删除`echo'。

在运行像这样的大型copy进程之前备份文件也是一个好主意。