Ersetzen Sie mehrere Leerzeichen durch ein Leerzeichen in TXT-Dateien mithilfe der Batchverarbeitung

Ersetzen Sie mehrere Leerzeichen durch ein Leerzeichen in TXT-Dateien mithilfe der Batchverarbeitung

Hier ist, was ich habe

    @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

Hier ist ein Beispiel für eine Datei

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

Ich muss die erste Zeile nicht mehr löschen. Kann mir jemand helfen, herauszufinden, wie ich die Leerzeichen ersetzen kann, ohne die erste/n Zeile/n zu überspringen?

Antwort1

Ersetzen Sie in Zeile 11:

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

mit

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

Um die Verwendung von Anführungszeichen für Dateinamen mit Leerzeichen zu ermöglichen,gemäß dieser StackOverflow-Antwortkönnen Sie die usebackqfolgende Option verwenden:

FOR /f "usebackq delims=" %%i IN ("text 2.txt") DO (

verwandte Informationen