首页 > 解决方案 > Windows 更多命令要求用户输入

问题描述

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

https://ss64.com/nt/more.html

When MORE is used without any redirection symbols it will display the percent complete e.g.

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

谢谢,帕万。

标签: batch-file

解决方案


即使您将其输出重定向到文件,只要遇到 64K 行,该more命令也会提示用户输入。此外,more扩展TABsSPACEs

一种解决方法是使用for /F循环跳过前 6 行:

> "outfile.txt" (
    for /F "usebackq skip=6 delims=" %%L in ("infile.txt") do @(
        echo(%%L
    )
)

然而,这将行长度限制为 8K 字符/字节。此外,这会跳过空行。

要保留空行,您可以这样做:

> "outfile.txt" (
    for /F "skip=6 delims=" %%L in ('findstr /N "^" "infile.txt"') do @(
        set "LINE=%%L"
        setlocal EnableDelayedExpansion
        echo(!LINE:*:=!
        endlocal
    )
)

这在每行之前都有一个行号和一个冒号findstr,因此断断续续地使用,因此没有行显示为空for /F;然后在写出行时删除前缀。行长度仍然有限​​。


推荐阅读