Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用copy命令以数字顺序合并文件的批处理脚本_Batch File_Cmd_Copy - Fatal编程技术网

Batch file 使用copy命令以数字顺序合并文件的批处理脚本

Batch file 使用copy命令以数字顺序合并文件的批处理脚本,batch-file,cmd,copy,Batch File,Cmd,Copy,如果有人能帮我这个请求,我将不胜感激 我需要一个动态批处理脚本,它可以对任意数量的文件执行以下命令: Copy 1.txt + 2.txt + 3.txt + 4.txt newfile.txt 问题是,如果我有以下文件: 1.txt 2.txt 3.txt ……等等 我尝试:Copy*.txt newfile.txt合并时排序不正确 它实际上是这样结束的:Copy 3.txt+4.txt+2.txt+1.txt newfile.txt 另外,我需要它使用copy命令,而不是type命令 我找

如果有人能帮我这个请求,我将不胜感激

我需要一个动态批处理脚本,它可以对任意数量的文件执行以下命令:

Copy 1.txt + 2.txt + 3.txt + 4.txt newfile.txt
问题是,如果我有以下文件:

1.txt

2.txt

3.txt

……等等

我尝试:
Copy*.txt newfile.txt
合并时排序不正确

它实际上是这样结束的:
Copy 3.txt+4.txt+2.txt+1.txt newfile.txt

另外,我需要它使用copy命令,而不是type命令

我找不到一个合适的方法来实现这一点,因为大多数FOR-loop示例都是在线使用的类型,这不适合我试图实现的目标


非常感谢你的帮助

尝试以下脚本:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET _cmd=COPY
FOR /F %%G IN ( 'DIR /O:N /B *.txt' ) DO (
    SET _cmd=!_cmd! %%G +
)
SET _cmd=!_cmd:~0,-2! newfile.txt
ECHO !_cmd!

脚本是“惰性”的,因为它输出完成的命令行,但实际上并不发出它。删除最后一行上的
ECHO
以激活它。

您很快就会发现批处理文件中列出的文件不会按数字顺序排序。文件将显示为1.txt 10.txt 2.txt等。。。。。您将需要一个额外的实用程序来按您想要的顺序获取文件。我建议您使用Dave Benham的JSORT实用程序@壁球人:你可能是对的……Dostips.com上还有一个SORTN.BAT实用程序。同样,您需要将DIR命令的结果通过管道传输到此批处理文件,然后捕获输出以生成copy命令。请注意,像这样的命令行的长度是有限的,8192字节,我认为。。。另一件事:是否有带前导零的
.txt
文件,如
01.txt
?谢谢,但这仍然不能按正确的顺序工作。它仍按以下顺序合并:3.txt 4.txt 2.txt 1。txt@binaryfinary:太尴尬了,我错过了包含排序标志。。。修正了这个问题。然而,如果你的文件上升到2位数,你会看到Squashman已经暗示的问题…你太棒了!完全按照需要工作。非常感谢。