我有一个“信息卡”脚本,用来记录 FRC 比赛中各个团队的小笔记,我想知道是否有一种简单的方法可以在文本文件中添加新行。 我目前已将其设置为向文本文件添加标题,然后允许您通过应用程序输入内容。但是,无论文本片段有多长,内容都会显示在文本文件的第一行。
这就是我所拥有的:
echo off
color 0a
title !@!
cls
:start
cls
echo This project was created by Liam Powell.
echo ---------------------------------------------------------------------------
echo 1) create new card
echo 2) open current card
echo 3) check current files.
echo 4) clear all files.
set input=
set /p input=
if %input%==1 goto cardcreator if NOT goto start
if %input%==2 goto open if NOT goto start
if %input%==3 goto check if NOT goto start
if %input%==4 goto clearall if NOT goto start
cls
:open
cls
echo enter the card name.
set input=
set /p input=
start C:\Users\Powell\Desktop\Batch-files\Card\cards\%input%.txt
pause
goto start
:cardcreator
cls
echo what do you want the card to be called?
set name=
set /p name=
echo what should the contents be?
set content=
set /p content=
echo %content% >C:\Users\Powell\Desktop\Batch-files\Card\cards\%name%.txt
pause
goto start
:check
cls
dir C:\Users\Powell\Desktop\Batch-files\Card\cards\ /b /o:n
pause
goto start
:clearall
cls
echo Delete all Cards?
set input=
set /p input=
if %input%==yes goto clearalltwo if NOT goto start
if %input%==Yes goto clearalltwo if NOT goto start
if %input%==no goto start
if %input%==No goto start
:clearalltwo
cls
cd "C:\Users\Powell\Desktop\Batch-files\Card\cards\"
del *.txt
pause
goto start
我的问题是,我将如何制作程序,以便我输入的文本向文本文件添加多行,而不是使所有输入的文本成为一行? 基本上,区别在于:
The quick brown fox jumps over the lazy dog. And enjoyed it.
VS
The quick brown fox jumps over the lazy dog.
And enjoyed it.
这就是你的意思设置一个新行的变量吗? :
@echo off
set nl=^& echo.
echo line1%nl%line2
copy con filename.txt
con 是键盘/屏幕。您可以通过按 Ctrl + Z 停止输入文本。然后输入的所有行都会复制到文件中。
有复制二进制和ascii两种。 Copy 巧妙地选择要使用哪一个,但您可以控制它 - 请参阅 copy /?。二进制适用于大小已知的文件等。 ASCII 适用于大小未知的流,例如串行端口和键盘。当遇到 Ctrl + Z 字符(字符编号 26)时,文件结束,即副本结束。
如果您想添加到文件中。
copy filename.txt+con filename.txt
加号 (+) 连接文件。
哇 - 这么多代码 - 但遗憾的是,没有明确解释需要什么。
echo what should the contents be?
:addmore
set "content="
set /p content=
if not defined content pause&goto start
echo %content% >>C:\Users\Powell\Desktop\Batch-files\Card\cards\%name%.txt
echo More content?
goto addmore
这应该允许您添加多行。请注意,
>>
会追加到现有文件或创建新文件(如果尚不存在)。 >
只需创建一个新文件。
最好使用
set
语法来 set "var=whatever"
字符串,以避免在分配的值中包含尾随空格。
注意用于级联指令的
instruction&instruction
语法。
事实上,我很困惑为什么你不直接使用
start C:\Users\Powell\Desktop\Batch-files\Card\cards\%name%.txt
这应该打开文本编辑器来创建文件。
下面的部分获取用户在“内容”下输入的内容,并根据您的要求在文本文件中每 25 个字符添加一个新行:
echo what do you want the card to be called?
set name=
set /p name=
echo what should the contents be?
set content=
set /p content=
rem Split the content in parts 25 characters each and add they as separated lines
:next25chars
echo %content:~0,25% >> C:\Users\Powell\Desktop\Batch-files\Card\cards\%name%.txt
set content=%content:~25%
if defined content goto next25chars
pause
在我看来,您的问题是如何在以下几行中将更多文本附加到文件中。
单个
>
创建或覆盖文件,两个 >>
将创建或追加到文件。
此方法也避免了行尾的空格。
>>"C:\Users\Powell\Desktop\Batch-files\Card\cards\%name%.txt" echo %content%
要在底部添加换行符,您可以使用
type NUL>> file
您可以将 >>
替换为 >
来删除现有内容