【发布时间】:2019-02-26 08:21:50
【问题描述】:
我想从 txt 文件中删除所有空格和制表符。以下是我尝试执行此操作的代码:
for /F "delims=" %%a in (CODE_CHECK.txt) do (
set one=%%a
set one=%one:=%
) >> CODE_CHECK_2.txt
示例文件行:
ONE VIEW
TWO PACKEGE BODY
代码之后应该是:
ONEVIEW
TWOPACKEGEBODY
【问题讨论】:
-
你有两个问题。一,代码没有将更改的变量输出到输出文件。二、需要使用延迟扩展。
-
猫 CODE_CHECK.txt | sed 's/[[:space:]]//g' >> CODE_CHECK_2.txt 这对我有用!
-
@RaitisLebedevs 嗯?这是 Windows 批处理文件,而不是 bash ......你是如何混淆这些的?由于不清楚,投票结束这个话题。
-
在从文本文件中删除所有普通空格和水平制表符方面,一切都比 Windows command 处理器好。因此,我建议考虑使用预安装的 VBScript、JScript、PowerShell 或 Python、Perl 或任何文本编辑器等替代方案。但是,如果您想使用最不适合此任务的应用程序执行此操作,则需要在
set "one=%%a"之后启用 delayed expansion,在set "one=!one: =!"和set "one=!one:TAB=!"和echo(!one!上使用 next,然后在循环。 -
阅读this answer 了解有关启用和禁用延迟扩展所需的命令 SETLOCAL 和 ENDLOCAL 的详细信息。在 FOR 循环之前使用
setlocal EnableDelayedExpansion仅启用一次,在 FOR 循环之后使用endlocal仅禁用一次会导致文本文件中包含 on 或更多的行损坏!在线set "one=%%a"。此外,您的 FOR 循环完全忽略空行和以;开头的行。
标签: batch-file tabs spaces