【发布时间】:2023-01-11 04:10:58
【问题描述】:
在这方面需要一些帮助,我确实理解批处理会将一个空行添加到 txt 文件的末尾
但我需要暂时删除它,以便我的下一个脚本可以运行
我已经尝试了 3 种不同的方法来完成这项工作,但无法弄清楚
这是我的剧本
@echo off
FOR %%i IN ("Toedit\Ready.txt") do (
findstr /V "^$" "%%i" >> "%%i.tmp"
>>"%%i.tmp" echo ,
del "%%i"
ren "%%i.tmp" "%%~nxi"
)
我也试过这样做
for /f "usebackq tokens=* delims=" %%a in ("Ready.txt") do (echo(%%a)>>~.txt
move /y ~.txt "Ready.txt"
但是最后的结果是一样的
这是我的Ready.txt文件内容
"dfhg": [
1,
2,
10,
4,
8,
9,
3,
6,
7,
5
empty space
我的坏结果
"dfhg": [
1,
2,
10,
4,
8,
9,
3,
6,
7,
5
,
empty space
我的最终结果
"dfhg": [
1,
2,
10,
4,
8,
9,
3,
6,
7,
5,
empty space
我知道批处理会创建一个空白空间,我对此表示满意,但我确实需要将其删除,以便我可以添加 ,
【问题讨论】:
-
没有空行被添加到文本文件的末尾。默认情况下,每个 Windows 文本文件都使用回车符和换行符对来终止一行。这两个隐藏字符是由
echo命令引入的,而不是由批处理文件引入的。如果您不需要它们,请不要使用echo命令。这个站点上已经有很多问题向您展示了如何只使用 Unix LF 终止符或根本不使用终止符而不是使用 CRLF 对来写入文件。您的问题并不表示您已尝试寻找示例或介绍他们的任何技术。 -
请注意,文本编辑器可以在文件末尾附加字符。如果文本文件的最后一行以行终止符结尾(Windows 上默认为回车 + 换行符),使用命令时就是这种情况回声并将其输出重定向到一个文件中,这并不意味着有一个空行。文本编辑器只允许在文本文件的最后一个字符之后附加更多字符,在本例中是换行符。对于读取文本文件的程序,文件末尾没有空行。
-
最后确实强烈推荐线在一个文本文件中也有一个线路终端否则许多程序无法正确处理细绳在文件末尾。我想这是一个 XY problem 描述。数组的最后一个元素之后不能有逗号,看起来您要在此处使用批处理文件创建该元素。批处理文件应使用命令行编写,输出数组的最后一个数组元素,不带逗号,所有其他数组元素行带逗号。
标签: batch-file