
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