在Windows批处理中打印段落
发布时间:2020-12-14 02:04:59 所属栏目:Windows 来源:网络整理
导读:以下代码可以很好地打印段落 @echo offsetlocal disableDelayedExpansionset "skip="for /f "delims=:" %%N in ( 'findstr /x /n ":::BeginText" "%~f0"') do if not defined skip set skip=%%Ntest.txt ( for /f "skip=%skip% tokens=*" %%A in ( 'findstr
以下代码可以很好地打印段落
@echo off setlocal disableDelayedExpansion set "skip=" for /f "delims=:" %%N in ( 'findstr /x /n ":::BeginText" "%~f0"' ) do if not defined skip set skip=%%N >test.txt ( for /f "skip=%skip% tokens=*" %%A in ( 'findstr /n "^" "%~f0"' ) do ( set "line=%%A" setlocal enableDelayedExpansion echo(!line:*:=! endlocal ) ) type test.txt exit /b :::BeginText This text will be exactly preserved with the following limitations: 1) Each line will be terminated by CR LF even if original has only LF. 2) Lines are limited in length to approximately 8191 bytes. Special characters like ^ & < > | etc. do not cause a problem. Empty lines are preserved! ;Lines beginning with ; are preserved. :::Leading : are preserved 有没有办法添加像::: Endtext这样的文本标记,以便只有段落之间的段落 解决方法
当然:-)
并且您可以在脚本中嵌入多个命名段落,并通过为每个段落使用唯一标签来选择性地编写它们. 只要GOTO和/或EXIT / B阻止文本被执行,命名文本就可以出现在脚本中的任何位置. 为方便起见,下面的脚本将逻辑封装在:printParagraph例程中. @echo off setlocal disableDelayedExpansion goto :start :::BeginText1 Paragraph 1 is preserved Bye! :::EndText :start echo Print paragraph 1 directly to screen echo ------------------------------------------ call :printParagraph 1 echo ------------------------------------------ echo( echo( call :printParagraph 2 >test.txt echo Write paragraph 2 to a file and type file echo ------------------------------------------ type test.txt echo ------------------------------------------ echo( echo( echo Print paragraph 3 directly to screen echo ------------------------------------------ call :printParagraph 3 echo ------------------------------------------ echo( echo( exit /b :::BeginText2 This is paragraph 2 Pure poetry :::EndText :printParagraph set "skip=" for /f "delims=:" %%N in ( 'findstr /x /n ":::BeginText%~1" "%~f0"' ) do if not defined skip set skip=%%N set "end=" for /f "delims=:" %%N in ( 'findstr /x /n ":::EndText" "%~f0"' ) do if %%N gtr %skip% if not defined end set end=%%N for /f "skip=%skip% tokens=*" %%A in ( 'findstr /n "^" "%~f0"' ) do ( for /f "delims=:" %%N in ("%%A") do if %%N geq %end% exit /b set "line=%%A" setlocal enableDelayedExpansion echo(!line:*:=! endlocal ) exit /b :::BeginText3 One more... ...for good measure :::EndText (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- windows-server-2008-r2 – 通过MMC在远程服务器
- 即使在添加到PATH之后,在Windows CMD中也无法识别
- windows-phone-8 – Rx 2.1:如何在Dispatcher上
- 在Windows上监听“用我的java应用程序打开文件”
- 如何浏览ActiveX DLL的类和方法?
- windows-server-2008-r2 – 从Server 2008r2到20
- windows-server-2012-r2 – 如何查看Windows服务
- Microsoft Office 365的安装
- lodctr /R 失败的情况
- WiX(Windows Installer Xml),创建通用变量
热点阅读