Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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
Windows上是否有cat的更换件_Windows_Command Line_Scripting - Fatal编程技术网

Windows上是否有cat的更换件

Windows上是否有cat的更换件,windows,command-line,scripting,Windows,Command Line,Scripting,我需要在Windows上使用*.bat脚本连接两个二进制文件 我如何才能做到这一点?您可以像这样使用copy/b: copy /b file1+file2 destfile 只需将dos copy命令用于多个源文件和一个目标文件 copy file1+file2-appendedfile 对于二进制文件,您可能需要/B选项Windowstype命令的工作原理与UNIXcat类似 示例1: type file1 file2 > file3 type *.vcf > all_in

我需要在Windows上使用
*.bat
脚本连接两个二进制文件


我如何才能做到这一点?

您可以像这样使用
copy/b

copy /b file1+file2 destfile

只需将dos copy命令用于多个源文件和一个目标文件

copy file1+file2-appendedfile

对于二进制文件,您可能需要/B选项

Windows
type
命令的工作原理与UNIX
cat
类似

示例1:

type file1 file2 > file3
type  *.vcf > all_in_one.vcf  
相当于:

cat file1 file2 > file3
示例2:

type file1 file2 > file3
type  *.vcf > all_in_one.vcf  
此命令将把所有vCard合并为一个。

无耻的PowerShell插件(因为我认为学习曲线是一个痛苦的过程,所以随时教一些东西都会有帮助)

请注意,
type
是Get Content的别名,因此如果您更喜欢它,可以编写:

type file1,file2

如果您可以控制正在工作的机器,我强烈建议您安装。只需“下载所有”并让wget程序检索所有包。然后,您将可以访问cat、grep、find、gzip、tar、less和数百个其他文件


GnuWin32是我在新的Windows设备上安装的第一件东西。

如果您只想在现有文件的末尾添加文本,可以使用>>管道。例:

echo new text >>existingFile.txt

如果您必须使用批处理脚本并安装python,这里有一个关于批处理和python的答案:

1>2# : ^
'''
@echo off
python "%~nx0" " %~nx1" "%~nx2" "%~nx3"
exit /b
rem ^
'''
import sys
import os

sys.argv = [argv.strip() for argv in sys.argv]
if len(sys.argv) != 4:
    sys.exit(1)

_, file_one, file_two, out_file = sys.argv

for file_name in [file_one, file_two]:
    if not os.path.isfile(file_name):
        print "Can't find: {0}".format(file_name)
        sys.exit(1)

if os.path.isfile(out_file):
    print "Output file exists and will be overwritten"

with open(out_file, "wb") as out:
    with open(file_one, "rb") as f1:
        out.write(f1.read())

    with open(file_two, "rb") as f2:
        out.write(f2.read())
如果另存为join.bat,则用法为:

join.bat file_one.bin file_two.bin out_file.bin

也感谢您的启发。

在Windows 10的Redstone 1版本中,Windows为NTOS内核添加了一个真正的Linux子系统。我认为最初它是为了支持Android应用程序,也许是docker类型的场景。Microsoft与Canonical合作并添加了一个实际的本机bash shell。此外,您还可以使用apt软件包管理器获得许多Ubuntu软件包。例如,您可以使用apt-get-gcc来安装gcc工具链,就像在Linux机器上一样


如果这样的事情在我上大学时就存在,我想我可以在本机Windows bash shell中完成大部分Unix编程任务。

我尝试重新加入已在Linux服务器中拆分的tar存档

我发现如果我在Windows的
cmd.exe
中使用
type
,会导致文件按错误的顺序加入。(例如
type
有时会先放入XXXX.ad,然后放入XXXX.ac、XXXX.aa等)


因此,我在GitHub中找到了一个名为
bat
的工具,它有一个Windows版本,有更好的代码高亮显示,重要的是,它在Windows上可以很好地重新加入tar归档

所以我在寻找一种类似的解决方案,能够保存EOL字符,但发现没有办法,所以我做了我最擅长的,并做出了自己的贡献 这是适用于windows的本机cat可执行文件-


我称之为夏普猫,因为它是用C#构建的,可以随意使用防病毒软件进行扫描,源代码将根据要求提供。Windows type命令有问题,例如512字节边界上的Unicode字符。尝试Cygwin的cat。

在这种情况下,键入的问题是,在命令行中键入多个指定的文件时,会添加不需要的文件头。在命令行中指定多个文件时,在复制文件内容之前,键入会输出几行空行和文件名。试试看:)啊,我没有注意到标题会转到stderr。很高兴知道。请注意,带箭头的类型(如上所述)不适用于大文件(如>2GB或4),至少在XP中是这样。不过,您可以使用“复制”命令(参见其他答案)。另一个提示:为了避免显示任何其他输出
键入file1 file2>file3 2>NUL
您的标题问题和描述问题并不完全同步。“类型”是标题问题的最佳答案,“副本”是描述问题的最佳答案。如果可能,您可能需要更改该标题。@Joseph
type
只能替换
cat
的部分功能(因为Windows上的二进制文件和文本文件之间存在差异)。交叉复制:请注意,
cat
不仅仅用于连接文件;它执行的另一个函数是将stdin复制到stdout(在没有参数的情况下调用)。关于如何在Windows上实现这一点,请参阅此问题:我建议使用GetGnuWin32(以简化安装),如果可以使用外部实用程序,我更喜欢busybox for Windows,它是一个包含30个Unix实用程序的单个~600 kB exe。唯一的区别是,对于文件序列,应该使用“busybox cat”命令而不是简单的“cat”。您可以使用通配符,如“copy/b file*destfile”。奇怪的是,这不是可接受的答案,因为在可接受答案的注释中概述了
类型
的明显问题。。。除非这个解决方案也有类似的缺点,但还不流行到让人们注意到的程度!非常感谢。对我有用。由于某种原因,
type
会在输出文件中重复两次内容。它可以工作,但速度很慢。我在等待powershell连接一些大型视频文件时发现了这个问题,每个文件需要半个小时。我终止了进程,并使用cmd尝试使用
type file1 file2>dest
,每一个都在几秒钟内完成。注意,出于某种原因,它将我的文件转换为UTF-16<编码>-编码UTF8没有改变任何东西。