批处理脚本文件内容迁移与合并实现问询
批处理脚本文件内容迁移与合并实现问询
嘿,我看你正在折腾一个合并文件的批处理脚本对吧?目前你已经能让用户输入两个文件名,但卡在了怎么把第一个文件的实际内容加到第二个文件里——其实不用绕弯子把内容存到变量里哦,批处理本身就有更直接省心的命令来搞定这件事!
先说说你当前代码里的小问题:你写的echo %firstfile% >> %file%,其实只是把用户输入的第一个文件名(不是文件里的内容)追加到一个叫file的变量对应的文件里,但这个file变量你根本没定义,而且这完全不是读取文件内容的正确姿势~
给你两种解决方案,优先推荐第一种:
方案一:直接合并文件内容(最稳妥高效)
这种方法不用折腾变量,直接用type命令读取第一个文件的内容,然后追加到第二个文件末尾,大文件也能轻松处理,还不会丢空行或者乱码:
@echo off setlocal enabledelayedexpansion :: 提示用户输入第一个要合并的文件名 set /p "firstfile=请输入要合并的第一个文件名:" :: 提示用户输入第二个文件名(内容会追加到这个文件末尾) set /p "secondfile=请输入要合并的第二个文件名:" :: 核心命令:把第一个文件的内容追加到第二个文件 type "%firstfile%" >> "%secondfile%" echo 文件合并完成! pause
方案二:把文件内容存入变量再合并(仅适合小文件)
要是你特别想试试把内容存到变量里再处理,那得注意批处理变量有长度限制(大概8191字符),小文件可以用,大文件或者带特殊字符的文件容易出问题,而且会跳过空行:
@echo off setlocal enabledelayedexpansion set /p "firstfile=请输入第一个文件名:" set /p "secondfile=请输入第二个文件名:" :: 初始化存储内容的变量 set "fileContent=" :: 逐行读取文件内容到变量 for /f "delims=" %%i in (%firstfile%) do ( set "fileContent=!fileContent!%%i\n" ) :: 将变量内容追加到第二个文件 echo !fileContent! >> "%secondfile%" echo 合并完成! pause
总的来说,优先用方案一,简单靠谱还没那么多坑~
备注:内容来源于stack exchange,提问作者Ethan Cato
相关产品推荐
相关产品推荐

