
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 usebackq
folgende Option verwenden:
FOR /f "usebackq delims=" %%i IN ("text 2.txt") DO (