0

我有一个奇怪的问题。我认为我的代码在 3 天前就可以工作,我对此非常确定。但是从昨天开始它给了我错误,而源代码没有任何改变。

我想将文本文件中的文本复制到另一个文本文件但没有空格。因此,如果我的原始文本文件有 3 个空格(因此仅包含制表符或“”的行),则新文件中应该有 0。这是我的代码:

REM Create a Copy of the File without blank spaces
for /F "delims=" %%J in (%SrcFile%) do (
setlocal enabledelayedexpansion
    set row=%%J
    if defined row echo.!row!>>%SrcFile%Backup.bak
endLocal

但是在备份文件中它仍然给我空白,即使我认为它们被“如果定义的行”部分消除了。我似乎无法理解这里有什么问题,因为我认为for /f跳过了空格?

谢谢你的帮助!

4

2 回答 2

1

简单地使用可以更简单地执行该任务,但要取决于其棘手的条件

FindStr /RC:"[^     ]" "source.txt">"new.txt"

括号之间的内容在哪里^                            TAB

于 2019-05-16T10:14:59.883 回答
0

正如 Compo 已经指出的,包含空格和/或制表符的行不是空的。

取每一行,删除所有空格和任何制表符。如果还有任何内容,请打印整行。

诀窍是第一个set命令:至少set "row=%%a<SPACE><TAB>"给以下命令一些要删除的东西(否则你以或而不是空字符串结尾)set<SPACE>=<TAB>=

@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%a in (t.txt) do (
  set "row=%%a  "
  set "row=!row: =!"
  set "row=!row:    =!"
  if defined row echo\%%a
)
于 2019-05-16T09:08:50.117 回答