Windows上是否有cat的更换件
我需要在Windows上使用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
*.bat
脚本连接两个二进制文件
我如何才能做到这一点?您可以像这样使用
copy/b
:
copy /b file1+file2 destfile
只需将dos copy命令用于多个源文件和一个目标文件
copy file1+file2-appendedfile
对于二进制文件,您可能需要/B选项Windows
type
命令的工作原理与UNIXcat
类似
示例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
您的标题问题和描述问题并不完全同步。“类型”是标题问题的最佳答案,“副本”是描述问题的最佳答案。如果可能,您可能需要更改该标题。@Josephtype
只能替换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没有改变任何东西。