2016-11-04 1 views
1

Ich habe die unten Batch-Datei:findstr/v Entfernen von Raum und Dote nicht funktioniert

cd /d "T:\R\YOU" 

for /r T:\R\YOU %%i in (.) do echo %%~nxi>>D:\MultiThreading\ReadFile.txt 

cd /d D:\MultiThreading 
rem I want to remove dots and spaces for the file content 
findstr /v "." ReadFile.pbd >> 11.txt 
findstr /v " " 11.pbd >> 12.txt 

pause 

Ich erhalte die korrekte Ausgabe von Datei lesen, aber die Ausgabe von 12.txt leer ist, was ich tue, falsch ?

Dies ist die Ausgabe von ReadFile.txt Datei:

YOU 
YOU 14.1.33333 
YOU 14.1.44444 
YOU 14.1.55555 
YOU 14.1.44444 

Ich möchte eine solche Ausgabe (Ich möchte die erste Zeile entfernen):

YOU14133333 
YOU14144444 
YOU14155555 
YOU14144444 
+0

'findstr' kann nur Strings suchen, aber nicht ändern; benutze stattdessen [substring replacement] (http://ss64.com/nt/syntax-replace.html) ... – aschipfl

+0

@aschipfl Ich habe findstr wegen dieser Frage in [SO] (http://stackoverflow.com/questions/4665505/to-remove-some-content-aus-einer-Datei-using-dos-batch-Datei) – Moudiz

+0

'find' /' findstr' gibt alle * Zeilen * des Textes zurück, die mindestens eine Übereinstimmung enthalten. Der Schalter '/ V' kehrt die Ausgabe um, so dass Zeilen, die keine Übereinstimmung enthalten, unbearbeitet zurückgegeben werden. Dadurch können bestimmte Zeilen einer Textdatei gefiltert werden. Sie möchten bestimmte * Zeichen * entfernen, damit die Befehle nicht verwendet werden können ... – aschipfl

Antwort

1

Der folgende Codeausschnitt Überspringen der Datei lesen ReadFile.txt die erste Zeile, entfernt Leerzeichen und Punkte aus jeder Zeile und gibt das Ergebnis in eine Datei namens ReturnFile.txt:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 
> "ReturnFile.txt" (
    for /F "usebackq skip=1 delims=" %%L in ("ReadFile.txt") do (
     set "LINE=%%L" 
     setlocal EnableDelayedExpansion 
     set "LINE=!LINE: =!" 
     set "LINE=!LINE:.=!" 
     echo(!LINE! 
     endlocal 
    ) 
) 
endlocal 
exit /B 
0
@Echo off 
For /f "usebackq Tokens=1-10 delims=. " %%A in ("ReadFile.txt" 
) Do If "%%B" Neq "" Echo:%%A%%B%%C%%D%%E%%F%%G%%H%%%I%%J 

Ein bisschen primitiv und eher kurz zu antworten.

Verwandte Themen