如何用另一批次覆盖批次的特定部分?
how to overwrite specific part of batch with another batch?
我的批处理中有很长的命令列表,其中很多字符串取决于我使用的文件的文件名。所以我想以某种方式重写那些具有不同变化的代码部分,这样我就可以避免手动搜索这些位,并在我处理 alt 文件的不同文件名时在我的长批次中一个接一个地重写它们。举个例子:
Batch-1-(endlesly-long-bat).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
Batch-2-(overwriting-bat).bat:
这个bat需要扫描"Batch-1-(endlesly-long-bat).bat"的内容并寻找特定的字符串"COOL-PROJECT",当它找到所有这些字符时,它将用另一个字符替换这些字符字符串 "WORST-NIGHTMARE"。所以基于输入掩码短语(COOL-PROJECT),这批需要在第一批中重写特定信息。 (我猜想用记事本打开它?或者有一个cmd方式?)
如果您反复使用同一个字符串,最好使用变量而不是字符串本身。
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
这样,您只需编辑一行,而不是分布在整个文件中的许多字符串。
由于这只是一个 "one-time-Task",您可以轻松地将 "find and replace" 与您的编辑器一起使用。
Als Golez 的想法非常好。只需将 set "filename=COOL-PROJECT"
替换为 set "filename=%~1"
并使用所需名称作为参数启动批处理文件:
Batch1.bat "COOL-PROJECT"
无需再次编辑任何内容。
我的批处理中有很长的命令列表,其中很多字符串取决于我使用的文件的文件名。所以我想以某种方式重写那些具有不同变化的代码部分,这样我就可以避免手动搜索这些位,并在我处理 alt 文件的不同文件名时在我的长批次中一个接一个地重写它们。举个例子:
Batch-1-(endlesly-long-bat).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
Batch-2-(overwriting-bat).bat:
这个bat需要扫描"Batch-1-(endlesly-long-bat).bat"的内容并寻找特定的字符串"COOL-PROJECT",当它找到所有这些字符时,它将用另一个字符替换这些字符字符串 "WORST-NIGHTMARE"。所以基于输入掩码短语(COOL-PROJECT),这批需要在第一批中重写特定信息。 (我猜想用记事本打开它?或者有一个cmd方式?)
如果您反复使用同一个字符串,最好使用变量而不是字符串本身。
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
这样,您只需编辑一行,而不是分布在整个文件中的许多字符串。
由于这只是一个 "one-time-Task",您可以轻松地将 "find and replace" 与您的编辑器一起使用。
Als Golez 的想法非常好。只需将 set "filename=COOL-PROJECT"
替换为 set "filename=%~1"
并使用所需名称作为参数启动批处理文件:
Batch1.bat "COOL-PROJECT"
无需再次编辑任何内容。