You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Batch脚本将批处理文件每行用&符号拼接为单行

Batch脚本实现多行批处理内容按&拼接为单行的方法

你原有代码的逻辑是将行内的空格替换为&,和「按行拼接、行间用&分隔」的需求不符,所以无法得到预期结果。

以下是可直接实现需求的脚本:

@echo off
setlocal enabledelayedexpansion

:: 配置源文件和目标文件路径
set "sourceFile=MYFILE1.bat"
set "targetFile=MYFILE2.bat"
set "merged="

:: 逐行读取源文件内容拼接
for /f "delims=" %%a in ('type "%sourceFile%"') do (
    if not defined merged (
        set "merged=%%a"
    ) else (
        set "merged=!merged! & %%a"
    )
)

:: 输出拼接结果到目标文件
echo !merged!> "%targetFile%"
endlocal
echo 转换完成,结果已写入%targetFile%

注意事项

  • 脚本默认会自动过滤源文件中的空行,如果需要保留空行,可以将for /f的读取语句替换为for /f "delims=" %%a in ('findstr /n "^" "%sourceFile%"'),再额外去除读取结果的行号前缀即可
  • 如果源文件内容包含!等延迟扩展敏感字符,可以使用以下兼容特殊字符的稳定版本:
@echo off
setlocal disableextensions disabledelayedexpansion

set "sourceFile=MYFILE1.bat"
set "targetFile=MYFILE2.bat"
set "merged="

for /f "delims=" %%a in ('type "%sourceFile%"') do (
    set "line=%%a"
    setlocal enabledelayedexpansion
    if not defined merged (
        set "merged=!line!"
    ) else (
        set "merged=!merged! & !line!"
    )
    for /f "delims=" %%b in ("!merged!") do (
        endlocal
        set "merged=%%b"
    )
)

setlocal enabledelayedexpansion
echo !merged!> "%targetFile%"
endlocal
echo 转换完成

内容的提问来源于stack exchange,提问作者rifteyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 16:15:01