kri*_*egy 10 text file lines batch-file
正如标题所述,我需要一个批处理文件来删除文本文件的第1行3行.
例如:
A
B
C
D
E
F
G
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我需要删除A,B和C以及该行
dbe*_*ham 16
more +3 "file.txt" >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul
Run Code Online (Sandbox Code Playgroud)
上述速度快,效果很好,但有以下限制:
使用FOR/F和FINDSTR的以下解决方案更加强大,但速度要慢得多.与简单的FOR/F解决方案不同,它保留了空行.但与所有FOR/F解决方案一样,它的最大行长限制为小于8191字节.同样,所有行都将通过回车和换行来终止.
@echo off
setlocal disableDelayedExpsnsion
>"file.txt.new" (
for /f "delims=" %%A in ('findstr /n "^" "file.txt"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
echo(!ln:*::=!
endlocal
)
)
move /y "file.txt.new" "file.txt" >nul
Run Code Online (Sandbox Code Playgroud)
如果您有我方便的JREPL.BAT正则表达式文本处理实用程序,那么您可以使用以下内容获得非常强大和快速的解决方案.无论原始格式如何,这仍然会终止所有带回车符和换行符(\ r \n)的行.
jrepl "^" "" /k 0 /exc 1:3 /f "test.txt" /o -
Run Code Online (Sandbox Code Playgroud)
您可以通过添加/U
选项来编写\n行终止符而不是\ r \n .
如果必须保留原始行终止符,则可以使用以下变体.这会将整个源文件加载到单个JScript变量中,因此总文件大小限制为大约1或2千兆字节(我忘记了确切的数字).
jrepl "(?:.*\n){1,3}([\s\S]*)" "$1" /m /f "test.txt" /o -
Run Code Online (Sandbox Code Playgroud)
请记住,JREPL是一个批处理文件,因此如果在另一个批处理脚本中使用该命令,则必须使用CALL JREPL.
Bal*_*i C 11
这应该做到这一点
for /f "skip=3 delims=*" %%a in (C:\file.txt) do (
echo %%a >>C:\newfile.txt
)
xcopy C:\newfile.txt C:\file.txt /y
del C:\newfile.txt /f /q
Run Code Online (Sandbox Code Playgroud)
这将重新创建删除前3行的文件.
要使用户保持更新,您可以在vbscript样式中将消息集成到批处理文件中,或者在命令提示符中输出消息.
@echo off
echo Removing...
for /f "skip=3 delims=*" %%a in (C:\file.txt) do (
echo %%a >>C:\newfile.txt
) >nul
echo Lines removed, rebuilding file...
xcopy C:\newfile.txt C:\file.txt /y >nul
echo File rebuilt, removing temporary files
del C:\newfile.txt /f /q >nul
msg * Done!
exit >nul
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
归档时间: |
|
查看次数: |
58039 次 |
最近记录: |