Windows bat实现删除文本中的 空行、空格、制表符、最后一行空行 您所在的位置:网站首页 记事本如何删除空格和空白 Windows bat实现删除文本中的 空行、空格、制表符、最后一行空行

Windows bat实现删除文本中的 空行、空格、制表符、最后一行空行

2024-07-14 04:34| 来源: 网络整理| 查看: 265

文章目录 一、准备测试数据 二、通过`for /f`实现 1. 删除仅含换行符的空行 2. 删除所有空白行 3. 删除所有空白行以及非空白行左侧的空格和制表符 4. 删除所有空白行以及非空白行两侧的空格和制表符 5. 删除所有空白行以及所有空格和制表符 三、通过`findstr`实现 1. 删除仅含换行符的空行 2. 删除所有空白行 四、删除文件最后一行空行 1. 使用`set /p=`实现 2. 使用`backspace`回退字符实现 3. 使用`echo`+`set /p=`实现 4. 使用`prompt`+`cmd /d /k >new_file1.txt )

Tips:

echo.%%l>>,.不能省略,%%l与>>之间不能有空格,不然空格会在新结果中出现; echo.你可以替换成echo+、echo;、echo: 等等,关于echo这种用法的更多讨论可参考:ECHO. FAILS to give text or blank line - Instead use ECHO/

执行结果: 新旧文本对比(肉眼对比),可以看出第4行仅含换行符的空白行被去除了。 注意:最后一行不含任何字符的保持原样 新旧文本对比

2. 删除所有空白行

删除仅含换行符、仅含空格或制表符的空白行

@echo off setlocal enabledelayedexpansion for /F "delims=" %%L in (old_file.txt) do ( set "str=%%L" set "str1=!str: = !" set "str2=!str1: =!" if not "!str2!"=="" echo.%%L )>>new_file2.txt endlocal

Tips:

set "str1=!str: = !",注意这里的被替换字符是一个制表符,将制表符替换为空格(尝试了将制表符替换为空,会出现第8行两个指标符的行仍原样输出了。。。不知道为啥); set "str2=!str1: =!",将空格替换为空; 经过上边两次替换,如果仍不为空,则表示该行为非空白行,然后 echo.%%L输出原行内容

执行结果: 新旧文本对比,可以看出仅含换行符、仅含空格或指标符的空白行(第4、6、8、10、12行)去除了。 删除所有空白行

3. 删除所有空白行以及非空白行左侧的空格和制表符 @echo off for /F "tokens=*" %%L in (old_file.txt) do ( if not "%%L"=="" echo.%%L )>>new_file3.txt

Tips:

if not "%%L"=="" echo.%%L如果换成echo.%%L,则仅含空格或制表符的行,将输出为仅含换行符的空行。

执行结果: 新旧文本对比,可以看出所有空白行及非空白行左侧的空格或制表符都去掉了删除空白行及左侧空白

4. 删除所有空白行以及非空白行两侧的空格和制表符 @echo off setlocal enabledelayedexpansion for /F "tokens=*" %%L


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有