如何用另一批批量覆盖批次的特定部分?

时间:2015-12-30 23:12:59

标签: windows batch-file cmd overwrite

我的批处理中有很长的命令列表,其中很多字符串依赖于我使用的文件的文件名。所以我想以某种方式重写那些具有不同变化的代码部分,这样我就可以避免手动搜索这些位并在我的长批处理中逐个重写它们,每当我使用不同文件名的alt文件时。举个例子:

批量-1-(endlesly长-BAT)。蝙蝠:

IF EXIST "*.webm" (
REN "*.webm" "COOL-PROJECT.webm"
)
FOR %%a in ("COOL-PROJECT.webm") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na.mp4"
IF EXIST "COOL-PROJECT.mp4" (
MD "COOL-PROJECT"
)
REM so on and so on. order, type or commands itselfs are irelevant

批量-2-(覆盖-BAT)。蝙蝠:

这个蝙蝠需要扫描“Batch-1-(endlesly-long-bat).bat”的内容,并寻找特定的字符串“COOL-PROJECT”,当它找到所有这些时,它就会将用另一个字符串“WORST-NIGHTMARE”替换这些字符。因此,基于输入掩码短语(COOL-PROJECT),此批次需要在第一批中重写特定信息。 (我想打开它在记事本中?还是有一种cmd方式?)

1 个答案:

答案 0 :(得分:2)

如果一遍又一遍地使用相同的字符串,最好使用变量而不是字符串本身。

set "filename=COOL-PROJECT"
IF EXIST "*.webm" (
REN "*.webm" "%filename%.webm"
)
FOR %%a in ("%filename%.webm") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na.mp4"
IF EXIST "%filename%.mp4" (
MD "%filename%"
)
REM so on and so on. order, type or commands itselfs are irelevant

这样,您只需要编辑一行而不是整个文件中分发的许多字符串。

由于这只是“一次性任务”,您可以轻松地在编辑器中使用“查找和替换”。

Als Golez的想法非常好。只需将set "filename=COOL-PROJECT"替换为set "filename=%~1",然后使用所需的名称作为参数启动批处理文件:

Batch1.bat "COOL-PROJECT"

无需再次编辑任何内容。