WindowsCMD |如果字符数到达,如何断行?

WindowsCMD |如果字符数到达,如何断行?,第1张

概述Windows / CMD | 如果字符到达,如何断行

我写了一个batch file,其中放置了一些被设置为某个variables的文本,然后下一行将该variables回显到文本文件中。

问题在于它把所有的东西都回荡到一条长长的线条中,而且不可能读取(它迫使你切换换行模式,但是如果软件不支持的话)。

echo "Lorem ipsum dolor sit amet,consectetur adipiscing elit. Phasellus at elit eu felis gravida pretium. Morbi suscipit eu metus quis facilisis. Sed aliquet eget sem ac semper. Fusce tempor magna dui,nec ullamcorper nulla rutrum eget. Suspendisse mattis lorem ut nulla placerat vestibulum. Vivamus sollicitudin nisl in lorem suscipit luctus. Nam a nisi vestibulum,lacinia nulla faucibus,condimentum eros. Donec fringilla neque et massa sagittis sollicitudin. Pellentesque vestibulum,metus maximus lacinia varius,nisi tortor facilisis ante,et porttitor magna urna sed odio. Maecenas ut mi sed ipsum pretium mattis et a urna. Nunc vulputate ornare bibendum. Pellentesque libero lacus,porttitor ut sem vitae,lobortis dictum erat. Sed viverra euismod nisl,nec malesuada turpis pellentesque eget." > text_file.txt

(看看这个例子,这是不可读的)

所以我需要把它打印成如下forms:

强制Cli使用现有的进程?

运行PHP脚本之前,是否可以通过命令行参数来要求.PHP文件?

linux – 在Cli中更改主机名

Java Apache Cli OptionBuilder不能用作Builder模式

附加到进程输出以供查看

"Lorem ipsum dolor sit amet,nec malesuada turpis pellentesque eget."

正如你所看到的,最长的一行是76字符。 有没有可能将它用作断点或什么?

但这也意味着它不能在这个词的中间切碎。

更新:我在linux上发现相同的问题和答案https://unix.stackexchange.com/questions/60219/is-there-a-command-line-tool-to-insert-line-breaks-into-a-long-string的命令被称为fold 。 任何替代windows?

Ubuntu Zend Framework cli securityCheck错误

最大执行时间超过300秒

如何使用Cli比较两个列表

我如何从网上比较两个文件

PHP Cli,windows 7 CMD和CLS / FF需要相处。 (使用Cli从PHP中清除Win7 CMD)

巧合的是,当我第一次开始学习批处理时,我在四年前写了类似的东西。 它几乎肯定不会接受& s或s),但是您的示例文本中没有任何内容,我不在乎测试它们。

将字符串作为单个参数传递。

@echo off setlocal enabledelayedexpansion cls set unformattedText=Lorem ipsum dolor sit amet,nec malesuada turpis pellentesque eget. set wIDth=76 set counter=0 set slashN=^ if not [%1]==[] set unformattedText=%~1 :wordCounter for /f "tokens=1,* delims= " %%A in ("%unformattedText%") do ( if not "%%A"=="" ( set words[!counter!]=%%A set /a counter=!counter!+1 set unformattedText=%%B goto wordCounter ) else ( goto loopBreak ) ) :loopBreak echo There are !counter! words in your sentence. set /a counter=!counter!-1 for /l %%A in (0,1,!counter!) do ( echo !words[%%A]!>tmp.txt for %%J in (tmp.txt) do ( set /a len[%%A]=%%~zJ set /a len[%%A]-=2 del tmp.txt if !len[%%A]! gtr %wIDth% set /a wIDth=!len[%%A]!+1 ) ) :: -- Concatenate the words and spaces -- set newString= set stringLength=0 for /l %%A in (0,!counter!) do ( if %%A lss !counter! ( set /a possLength=!stringLength!+!len[%%A]!+1 if !possLength! leq %wIDth% ( set newString=!newString!!words[%%A]! set /a stringLength+=!len[%%A]!+1 ) else ( set newString=!newString!!slashN!!words[%%A]! set /a stringLength=!len[%%A]!+1 ) ) else ( set /a possLength=!stringLength!+!len[%%A]! if !possLength! leq %wIDth% ( set newString=!newString!!words[%%A]! set /a stringLength+=!len[%%A]! ) else ( set newString=!newString!!slashN!!words[%%A]! set /a stringLength=!len[%%A]! ) ) ) echo !newString!

这是我的版本…

编辑 :我修改了代码,所以拆分方法现在孤立在一个子程序,可能会被任何程序调用。

子程序在最大允许长度之前的空格处剪切字符串,只要有剩余的字符串,就重复这个过程。

@echo off setlocal set longString="Lorem ipsum dolor sit amet,nec malesuada turpis pellentesque eget." rem To show lines in screen: call :splitlines longString 76 rem To store lines in a file: call :splitlines longString 76 > file.txt goto :EOF :splitlines string wIDth setlocal EnableDelayedExpansion set "string=!%~1!" :nextline set /A "i=%~2+1" :prevChar set /A i-=1 if "!string:~%i%,1!" neq " " goto prevChar echo !string:~0,%i%! set /A i+=1 set "string=!string:~%i%!" if "!string:~%~2!" neq "" goto nextline echo !string! exit /B

总结

以上是内存溢出为你收集整理的Windows / CMD | 如果字符数到达,如何断行?全部内容,希望文章能够帮你解决Windows / CMD | 如果字符数到达,如何断行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1155953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存