Durchlaufen Sie die Textdatei und entfernen Sie mithilfe eines Batches einen Teil der Zeichenfolge

Durchlaufen Sie die Textdatei und entfernen Sie mithilfe eines Batches einen Teil der Zeichenfolge

Wie kann ich die Windows-Befehlszeile für Folgendes verwenden?

C:\Users\My Computer\SkyDrive\WORK ORDERS\Subdivision\Sec. 1\12345678_123 LUMINAIRE LN.pdf

becomes

WORK ORDERS\Subdivision\Sec. 1\12345678_123 LUMINAIRE LN.pdf

Ich bin besser vertraut mit Linux, für das ich Folgendes verwende

cat wo.txt2 | grep "WORK\|pdf|" | sed 's/^.*WORK/WORK/' >> wo.txt

Meine Textdatei enthält ca. 17.000 Zeilen

Antwort1

Verwendung von reinem Batch:

@echo off
setlocal disableDelayeExpansion
set "input=wo.txt2"
set "output=wo.txt"
>"%output%" (
  for /f "delims=" %%A in ('findstr /n "^" "%input%"') do (
    set "ln=%%A"
    setlocal enableDelayedExpansion
    set "ln=!ln:*:=!"
    if defined ln set "ln=!ln:*WORK=WORK!"
    (echo(!ln!)
    endlocal
  )
)

Beachten Sie, dass bei der Suche nach WORK die Groß-/Kleinschreibung nicht beachtet wird.

Mit FINDSTR wird jeder Zeile die Zeilennummer gefolgt von einem Doppelpunkt vorangestellt, um Leerzeilen zu erhalten.

Die verzögerte Erweiterung wird innerhalb der Schleife ein- und ausgeschaltet, um alle !in der Quelldatei vorhandenen Erweiterungen beizubehalten.

Eine viel einfachere Lösung ist die Verwendung meinerJREPL.BAT Regex-Textverarbeitungsprogramm– ein rein skriptbasiertes Dienstprogramm (Hybrid JScript/Batch), das nativ auf jedem Windows-Computer ab XP ausgeführt werden kann.

Von der Befehlszeile aus:

jrepl "^.*WORK" "WORK" /f "wo.txt2" /o "wo.txt"

Sie müssen CALL JREPL verwenden, wenn Sie den Befehl in einem Batch-Skript verwenden.

Antwort2

Verwenden Sie Notepad++, öffnen Sie die Datei, drücken Sie die Alt-Taste und wählen Sie mit der Maus die Textspalten aus, die Sie nicht möchten. Während Sie die Alt-Taste gedrückt halten, bleiben Sie im Spaltenmodus. Lassen Sie die Alt-Taste los und drücken Sie die Entf-Taste. Dies ist gültig, wenn alle Zeilen die gleiche Anzahl zu löschender Zeichen haben.

Antwort3

Sehen Sie sich String-Funktionen wie dieses Beispiel an:

   setze str=die Katze im Hut  
   echo.%str%
   setze str=%str:teh=das%
   echo.%str%

Sie möchten es grundsätzlich C:\Users\My Computer\SkyDrive\durch ein Leerzeichen ersetzen.

Hier ist eine Liste der Zeichenfolgenfunktionen, die Sie verwenden können:http://www.dostips.com/DtTipsStringManipulation.php#Snippets.MidString

verwandte Informationen