.Bat 将双回车换行替换为单回车换行

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

我重新开始处理我的旧脚本,并想解决我遇到的一个小问题。正如标题所说,我想在特定的 txt 文件中用单个回车符和换行符替换双回车符和换行符,以删除空行。我想自动执行此操作,因为最终 txt 文件的每个部分都不需要它,而只需要较小的部分。

这是我目前所做的:

(
    ECHO ================================
    ECHO Printers
    WMIC printerconfig get Name
) | More > Printers.txt

输出总是这样的:

================================
Printers
Printer-01

Printer-02

Printer-03
etc. etc.

我想做的是替换文本文件中的那些双回车符和换行符。

我在想类似的事情:

TYPE Printers.txt | Replace "Carriage Return Line Feed Carriage Return and Line Feed" by "Carriage Return and Line Feed" > Printers2.txt

我可能有错误的命令,但说实话,我上次积极处理这个脚本是几年前的事了。在为 PowerShell 重新设计之前,我想解决一些问题,以防我需要使用 bat 文件。

batch-file cmd
1个回答
0
投票

对于您的情况,这应该有效:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

copy /y NUL Printers.txt >NUL
for /f "tokens=*" %%i in ('WMIC printerconfig get Name') do (
    SET line=%%i
    SET removedEOL=!line:~0,-1!
    IF "!removedEOL!" NEQ "" (
        ECHO !removedEOL!>>Printers.txt
    )
)

您的文件在打印机名称行末尾始终有 CR,后跟带有 CRLF 的空行。该脚本会跳过空行并删除打印机行中的最后一个字符 - CR 并将其回显到输出文件中。

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