Batch file Windows更多命令要求用户输入

Batch file Windows更多命令要求用户输入,batch-file,Batch File,我有一个批处理文件,其中包含更多命令,用于跳过文件的前几行并打印其余部分。我正在使用更多+6文件名。我看到它打开了文件的某些部分,并要求用户输入提示,以便加载下一部分。我尝试使用操作将more命令的输出重定向到另一个文件,但仍然存在相同的问题 谢谢, Pavan.即使您将其输出重定向到文件,只要遇到64K行,也会提示用户输入。此外,more将选项卡扩展到空格 解决方法是使用A跳过前6行: >“outfile.txt”( 对于/F“usebackq skip=6 delims=“%%L in”(

我有一个批处理文件,其中包含更多命令,用于跳过文件的前几行并打印其余部分。我正在使用
更多+6文件名
。我看到它打开了文件的某些部分,并要求用户输入提示,以便加载下一部分。我尝试使用
操作将more命令的输出重定向到另一个文件,但仍然存在相同的问题

谢谢, Pavan.

即使您将其输出重定向到文件,只要遇到64K行,也会提示用户输入。此外,
more
将选项卡扩展到空格

解决方法是使用A跳过前6行:

>“outfile.txt”(
对于/F“usebackq skip=6 delims=“%%L in”(“infle.txt”)do@(
回声(%%L
)
)
但是,这将行长度限制为8K个字符/字节。此外,这将跳过空行

要保留空行,可以执行以下操作:

>“outfile.txt”(
对于/F“skip=6 delims=“%%L in('findstr/N“^”“infle.txt”)do@(
设置“行=%%L”
setlocal EnableDelayedExpansion
回音(!行::=!
端部
)
)
这在每一行之前都有一个行号和一个冒号,间歇使用,因此,
for/F
没有一行显示为空;然后在写出行时,前缀将被删除。但行长仍然有限。

您可以使用:


如果跳过的行超过1023个字符,此方法可能会失败,这是
set/p
命令的限制。

是的。如果文件超过64K行,
more
将提示您继续。那么有没有办法绕过此问题@Squashman。或者我必须使用for循环读取文件并跳过前6行:(你需要使用
FOR/F
来读取文件。已经在SO和DosTips.com上讨论过。没有人找到解决这个问题的方法。即使你及时回复(比如
echo/| more+6 infle.txt>outfile.txt
)您将在输出文件中获得提示文本;
for/F
但是将每行的长度限制为8K个字符,因此根据您的数据,您可能需要切换到另一种语言,如PowerShell…
for/F“skip=6 tokens=1,*delims=:“%%L in('findstr/N“^”“infle.txt”)do@echo(%M
?请注意,上面注释中使用的方法会从行中删除任何前导冒号,
,因为
Delims
是贪婪的,它将多个连续分隔符计算为一个。这就是为什么我更喜欢
find/n/v”“
而不是
findstr/n^”
(冒号非常常见,但以
]
开头的行应该非常罕见。)除了更糟糕的行长度限制外,这要求文本文件中的最后一行以换行符终止,否则,
findstr
可能挂起(取决于Windows版本;在Windows 7上挂起)。。。
When MORE is used without any redirection symbols it will display the percent complete e.g.

MORE /E myfile.txt
--More (17%) --
< myfile.txt (

   rem Skip the first 6 lines
   for /L %%i in (1,1,6) do set /P "="

   rem Show the rest
   findstr "^"

)