如何使用列表和批处理连接文件?

如何使用列表和批处理连接文件?

xargs < list.txt cat -- > compiled.txt我需要与 Windows 批处理文件等效的 shell 命令。

有一个目录,里面全是文本文件(大约 50 到 500 个文件),我需要将它们连接成一个文件。顺序很重要。文件不能按字符顺序命名,因为自然顺序不是目标文件中应编译的顺序。

我曾想过将源文件命名为$DISREGARD1_$SECOND-ORDER_$FIRST-ORDER_$THIRD-ORDER_$DISREGARD2.txt并对其进行一些巫术,但我认为对于我的用例来说,维护有序列表更简单且更稳定。使用 xargs 和 cat 从列表中进行连接非常容易。如何在 Windows 上使用 .bat 文件进行连接?

我需要将其作为幂等批处理文件,以便用户可以单击它。目标文件中不应有命令输出、多余的回车符或源文件中没有的任何其他内容(例如,如果文件是二进制文件)。

附加问题:如果允许在列表文件中添加注释就好了(为了限制复杂性,不允许有空行)。我会在 shell 中使用类似 的命令来执行此操作。grep -v ^# < list.txt | xargs cat -- > compiled.txt是否有机会将其也放入 .bat 文件中?

答案1

这应该可以做到:

@echo off
REM create empty result file
copy nul results.txt /y

REM iterate over list skipping #entries and copy binary
for /f "usebackq delims=" %%F in (`findstr /R /V "^#" list.txt`) do (
 copy /b results.txt+"%%~F" results.txt 
)

语法与批处理文件一样,如果要直接从 cmd 行执行,请更改%%F%F

答案2

用一个for环形

@echo off

( for /f "tokens=*" %%i in (list.txt) do type "%%~i" ) > compiled.txt

相关内容