Ich möchte eine Batch-Datei, die: eine bestimmte Zeile [line number by %lnum%]
in einer TXT-Datei entfernt.Batch: Linie & entfernen
Antwort
Das klingt wie ein Job für sed
. Unter Windows müssten Sie windows port installieren und dann sed in Ihrer Batch-Datei aufrufen.
sed '<linenumber>d' filename > newfilename
die 4. Zeile löschen:
sed '4d' filename > newfilename
Wenn Sie in Windows sind und Sie wollen es in einer Batch-Datei zu tun, können Sie das folgende mit brutaler Gewalt tun:
@echo off
setlocal ENABLEDELAYEDEXPANSION
SET lineNum=
SET filename=%1
SET targetLine=%2
SET targetFile=%filename%.tmp
DEL %targetFile%
FOR /F " tokens=1 delims=" %%i in (%filename%) do (
SET /a lineNum += 1
if NOT !lineNum! == !targetLine! ECHO %%i >> !targetFile!
)
REN %filename% %filename%.orig
REN %targetFile% %filename%
In den Stapel geben Sie den Namen Ihrer Zieldatei und die Zeilennummer ein, die Sie entfernen möchten. Es erstellt eine temporäre Datei, leitet die "guten" Zeilen von Ihrem Original in den Temp und endet dann durch Umbenennen der Dateien, so dass Sie Ihr Original behalten und die modifizierte Datei an Ort und Stelle haben.
müssen Sie keinen externen Befehl verwenden. Sie können Vbscript
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
num = objArgs(0)
strFile = objArgs(1)
Set objFile = objFS.OpenTextFile(strFile)
Do Until objFile.AtEndOfLine
linenum = objFile.Line
If linenum = Int(num) Then
objFile.SkipLine
End If
strLine = objFile.ReadLine
WScript.Echo strLine
Loop
, wie benutzen verwenden:
C:\test>cscript /nologo removeline.vbs 4 file.txt > newfile.txt
reine cmd ?:
delline.cmdNummerDateiname
@echo off
setlocal ENABLEDELAYEDEXPANSION
set line=%~1
set file=%~nx2
set dSource=%~dp2
set i=0
for /F "delims=" %%l in (%dSource%%file%) do (
set /a i+=1
if not !i! EQU %line% call :BuildFile "%%l"
)
del /f "%dSource%%file%" >nul
for %%l in (%_file%) do echo %%~l>>"%dSource%%file%"
endlocal& exit /b 0
:BuildFile
set _file=%_file% %1
exit /b 0
___Notes_____
1: Keine Überprüfung der Parameter. Zuerst muss eine Nummer sein, die zweite eine Datei oder Pfad + Datei.
2: Wie bei anderen Antworten auch keine temporäre Datei.
3: setlocal Mit Ihnen erlauben würde, diesen Code einfach in einem Skript zu integrieren, indem es Namensgebung: delline und deren Verwendung mag: Aufruf: delline NummerDatei
WARNUNG: Eine leere Zeile aus der Quelldatei würde beim Lesen übersprungen/verloren gehen (durch die for.loop). Eine Datei mit, sagt 10 Zeilen, von denen 4 Leerstellen sind, würde als 6 zu verarbeitende Zeilen gelesen werden. Die Zeilennummer gegeben habe angewandt werden (also gelöscht) aus den sechs Datenleitungen und 10 den Start nicht
bearbeiten
etwas zu schnell ging, nicht akf Antwort sehen, die Mine ganz nah sieht .
- 1. Php Hilfe Entfernen td Linie
- 2. Entfernen QSplitter Linie zwischen Widgets
- 3. Batch Combine CSV Header entfernen
- 4. ERB Vorlage Entfernen der Trailing-Linie
- 5. Entfernen von Ttk Notebook Tab Gestrichelte Linie
- 6. Batch Löschen von Dateien aus einer Datei auf Cmd Linie
- 7. Batch: eine Linie, die durch eine andere Leitung austauschen
- 8. Entfernen von Werten aus Satz im Batch
- 9. unerwünschte Komma für JSON Formatierung Batch Entfernen
- 10. QAbstractItemModel Batch entfernen mit vielen Eltern
- 11. Entfernen Sie führende Nullen in Batch-Datei
- 12. Batch-Datei erstellen - Erweiterung ändern, Zeile entfernen
- 13. entfernen führenden "./" in einem Batch-Skript
- 14. Wie kann ich die gestrichelte Linie von meiner Menüoberfläche entfernen?
- 15. WPF TabControl Wie Linie zu entfernen, wenn TabItem ausgewählt ist
- 16. Matplotlib - So entfernen Sie eine bestimmte Linie oder Kurve
- 17. Entfernen der weißen Linie unter Abschnittsüberschrift in UITableView?
- 18. Entfernen Sie die vertikale Linie im Diagramm js Liniendiagramm
- 19. Android: Wie Linie zwischen Toolbar und Statusbar zu entfernen
- 20. Entfernen Sie die gestrichelte Linie in der Zeichnung Polylinie
- 21. Entfernen von Trailing Schrägstrich aus Batch-Datei-Eingang
- 22. So entfernen Sie USB-Gerät von Windows-Terminal (Batch-Datei)?
- 23. Batch-Skript zum Entfernen von McAfee-Agent-Software
- 24. Batch Umbenennen von Dateien Suffix nach „.csv“ entfernen
- 25. Batch umbenennen - Klammern und Leerzeichen entfernen und führende Null haben
- 26. Batch als Admin ausführen (automatisches Hochfahren) und dann wieder entfernen
- 27. Batch Entfernen Sie alle Dateien ohne Erweiterungen aus der Liste
- 28. in Textdatei ersetzt Linie mit einer neuen Linie
- 29. Massenlöschung Batch-Datei
- 30. Windows-Batch-Dateinamen
hmmm ... wenn ich sed installiert und meinen Computer neu gestartet habe, wurde es von CMD nicht gefunden. Ich habe Win7. –
oh, ich weiß wie es jetzt funktioniert. –