在 txt 文件 Windows Batch 中添加新行

问题描述 投票:0回答:6

我有一个“信息卡”脚本,用来记录 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.
batch-file
6个回答
0
投票

这就是你的意思设置一个新行的变量吗? :

@echo off
set nl=^& echo.     
echo line1%nl%line2

0
投票
copy con filename.txt

con 是键盘/屏幕。您可以通过按 Ctrl + Z 停止输入文本。然后输入的所有行都会复制到文件中。

有复制二进制和ascii两种。 Copy 巧妙地选择要使用哪一个,但您可以控制它 - 请参阅 copy /?。二进制适用于大小已知的文件等。 ASCII 适用于大小未知的流,例如串行端口和键盘。当遇到 Ctrl + Z 字符(字符编号 26)时,文件结束,即副本结束。

如果您想添加到文件中。

copy filename.txt+con filename.txt

加号 (+) 连接文件。


0
投票

哇 - 这么多代码 - 但遗憾的是,没有明确解释需要什么。

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

这应该打开文本编辑器来创建文件。


0
投票

下面的部分获取用户在“内容”下输入的内容,并根据您的要求在文本文件中每 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

0
投票

在我看来,您的问题是如何在以下几行中将更多文本附加到文件中。

单个

>
创建或覆盖文件,两个
>>
将创建或追加到文件。

此方法也避免了行尾的空格。

>>"C:\Users\Powell\Desktop\Batch-files\Card\cards\%name%.txt" echo %content%

0
投票

要在底部添加换行符,您可以使用

type NUL>> file
您可以将
>>
替换为
>
来删除现有内容

© www.soinside.com 2019 - 2024. All rights reserved.