Пакетная проблема копирования текста из одного файла в другой без пробелов - PullRequest
0 голосов
/ 16 мая 2019

У меня странная проблема. Я думал, что мой код работал 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 пропускает пробелы?

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Задача может быть выполнена проще, при условии ее сложных условий , просто используя :

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

Если в скобках указано содержание ^ TAB

0 голосов
/ 16 мая 2019

Как уже отмечал 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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...