Windows more命令要求用户输入

时间:2018-08-15 14:53:51

标签: batch-file

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

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%) --

谢谢, 帕万。

2 个答案:

答案 0 :(得分:0)

more command会提示您输入用户信息,即使您将其输出重定向到文件时,也会遇到64K行。此外,more TAB 扩展为 SPACE

一种解决方法是使用for /F loop跳过前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中没有一行显示为空;然后在写出行时删除前缀。线长仍然是有限的。

答案 1 :(得分:0)

您可以使用this simpler method

< myfile.txt (

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

   rem Show the rest
   findstr "^"

)

如果跳过的行长超过1023个字符(即set /P命令的限制),则此方法可能会失败。