Замените несколько пробелов одним пробелом в текстовых файлах, используя пакет

0

Вот что у меня есть

    @ECHO OFF
   SETLOCAL
   ::
   :: delete first line/lines
   :: and replace each occurrence of 2 or more spaces
   :: by a delimiter
   ::
   DEL outfile.txt   2>nul /F /Q
   :: replace with ->
   SET delim= 
   :: set number of lines to delete 
   FOR /f "skip=1delims=" %%i IN (Text.txt) DO (
   SET line=%%i
   (SET newline=)
   SET count=0
   CALL :change
   )
   GOTO :eof

   :CHANGE
   SET c1=%line:~0,1%
   SET line=%line:~1%
   IF "%c1%"==" " (SET /a count+=1) ELSE (
   IF %count%==0 (SET newline=%newline%%c1%) ELSE (
   IF %count%==1 (SET newline=%newline% %c1%) ELSE (
   SET newline=%newline%%delim%%c1%)
   SET count=0
   )
   )
   IF DEFINED line GOTO CHANGE
   ::
   :: You may want to preserve trailing spaces
   :: or convert them...
   ::
   IF %count%==0 GOTO print
   IF %count%==1 SET newline=%newline% &GOTO print
   SET newline=%newline%%delim%
   :PRINT
   >>outfile.txt ECHO %newline%
   GOTO :eof

Вот пример файла

    P1 something             232
2      232  233
10     232  232
2312   232  232
231    232 323

Мне больше не нужно удалять первую строку, может ли кто-нибудь 1 помочь мне понять, как заменить пробелы в win пропуская первую строку / строки.

Ионеску
источник

Ответы:

0

В строке 11 заменить:

FOR /f "skip=1delims=" %%i IN (Text.txt) DO (

с участием

FOR /f "delims=" %%i IN (Text.txt) DO (

Чтобы разрешить использование кавычек для имен файлов с пробелами, для этого ответа StackOverflow вы можете использовать usebackqопцию:

FOR /f "usebackq delims=" %%i IN ("text 2.txt") DO (
Anaksunaman
источник
Есть ли способ использовать файлы с пробелами в их имени? Например, «New Text File.txt» (обычно кавычки являются ответом, но не в этот раз)
Ионеску
Обновил мой ответ. Короче говоря, вы можете использовать usebackqопцию. Пришлось искать это. =)
Анаксунаман