如何避免批次限制(每行8191个字符)?

时间:2012-11-22 15:37:19

标签: windows scripting batch-file

我有一个多行文件(约300 - 400行),每行有72个字符,我需要将其转换为一行。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这是可能的,假设您希望在文本文件中的一行中连接行。但是,即使您可以使用批处理创建长行,也无法使用批处理来读取该行。正如Electro Hacker所说,你不能创建长度超过8191字节的批处理环境变量。

XP SET /P将保留每行的前导空格。但是Vista及其他地方SET /P剥离了前导空格。

此解决方案在每个连接行之间添加一个空格。

@echo off
setlocal
set "infile=test.txt"
set "outfile=out.txt"

>"%outfile%" (
  for /f usebackq^ delims^=^ eol^= %%A in ("%infile%") do <nul set /p "=%%A "
)

答案 1 :(得分:2)

如果您想坚持使用标准的Windows工具,PowerShell也是一个选择:

-join (Get-Content foo.txt)

答案 2 :(得分:0)

你不能打破操作系统的限制,你不能破坏Windows中的255个字符路径,你不能破坏CMD解释器长度限制,就像那样!

很抱歉,你无法将该行存储到var中,没有办法,不存在任何魔法,计算机是合乎逻辑的。

但它不是世界末日,你可以在任何其他语言中轻松实现,我推荐你使用Ruby或python(Ruby),这是一件容易的事,打开文件,将内容存储到var中,然后做你想做的事,不需要任何经验,如果你需要一个例子只是评论这个。