我有一个带有更多命令的批处理文件,以跳过文件的前几行并打印其余部分。我正在使用more +6 file_name
。我看到它打开了文件的某个百分比,并要求用户输入提示,以便它可以加载下一部分。我尝试使用>
操作将more命令的输出重定向到另一个文件,但仍然遇到相同的问题。
When MORE is used without any redirection symbols it will display the percent complete e.g.
MORE /E myfile.txt
--More (17%) --
谢谢, 帕万。
答案 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
命令的限制),则此方法可能会失败。