Batch-split eine text-Datei
Habe ich diese batch-Datei zu splitten, eine txt-Datei:
@echo off
for /f "tokens=1*delims=:" %%a in ('findstr /n "^" "PASSWORD.txt"') do for /f "delims=~" %%c in ("%%~b") do >"text%%a.txt" echo(%%c
pause
Es funktioniert, aber es spaltet es Zeile für Zeile. Wie kann ich sicherstellen, teilen Sie es alle 5000 Zeilen. Vielen Dank im Voraus.
Edit:
I have just tried this:
@echo off
setlocal ENABLEDELAYEDEXPANSION
REM Edit this value to change the name of the file that needs splitting. Include the extension.
SET BFN=passwordAll.txt
REM Edit this value to change the number of lines per file.
SET LPF=50000
REM Edit this value to change the name of each short file. It will be followed by a number indicating where it is in the list.
SET SFN=SplitFile
REM Do not change beyond this line.
SET SFX=%BFN:~-3%
SET /A LineNum=0
SET /A FileNum=1
For /F "delims==" %%l in (%BFN%) Do (
SET /A LineNum+=1
echo %%l >> %SFN%!FileNum!.%SFX%
if !LineNum! EQU !LPF! (
SET /A LineNum=0
SET /A FileNum+=1
)
)
endlocal
Pause
exit
Aber ich bekomme eine Fehlermeldung: Not enough storage is available to process this command
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies wird geben Sie a basic skeleton. Anzupassen, wie gebraucht
BEARBEITET
Als Kommentare angegeben, eine 4,3 GB-Datei ist schwer zu verwalten.
for /f
laden muss die komplette Datei in den Speicher und der Puffer, die benötigt wird, ist die doppelte Größe wie die Datei in unicode konvertiert, in Erinnerung.Dies ist eine ad-hoc-Lösung. Ich habe es nicht getestet über eine Datei hoch, aber zumindest in der Theorie sollte es funktionieren (es sei denn, 5000 Zeilen braucht eine Menge Speicher, es hängt von der Länge der Linie)
Ja, mit so einer Datei, es wird LANGSAM
BEARBEITET, wieder: den Vorherigen code wird nicht korrekt funktionieren für Linien, beginnend mit einem Doppelpunkt, als es hat gewesen verwendet als Trennzeichen in der
for
Befehl separaten Zeile zahlen von Daten.Für eine alternative, noch Reine batch, aber immer noch LANGSAM
Not enough storage is available to process this command
for
Befehl kann nicht Parsen einer Datei, die groß ist. Ich habe keine Referenz, aber es kann auch ein limit im Speicher, bin ich nicht sicher. Auf meinem 32 bit-system in der Vergangenheit fand ich eine Datei ungefähr 3 GB ausfallen würde. Eine Ebene für das script sehr langsam auf eine Datei in der Nähe, die Größe auch.Test: die input-Datei ist
"file.txt"
- und output-Dateien sind"splitfile-5000.txt"
zum Beispiel.Diese wird eine helper-batch-Datei namens
findrepl.bat
- download von: https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.batOrt
findrepl.bat
im gleichen Ordner wie die batch-Datei oder auf dem Weg.Eine Einschränkung ist die Anzahl der Zeilen in der Datei und die echte größte Zahl ist
2^31 - 1
wo batch-Mathematik-tops aus.CScript Error: Can't find script engine "JScript" for script "C:\Users\09stephenb\Desktop\batch\findrepl.bat".
Wenn die input-Datei keine leeren Zeilen, Vorherige Methode kann modifiziert werden, um schneller zu laufen.