![]() |
Разбите текстового файла на отдельные файлы по определенному условию
Здравствуйте. Нужна помощь. Есть список программ, скаченных с ЧПУ станка одним файлом. Необходимо этот файл разделить на отдельные файлы, например по началу программы ("O").
Т.е. если в программе присутствует O, то он должен от неё и до другого O, вырезать эту часть текста и создать новый документ с этим текстом. Пример: Скрытый текст
O0009(Bolt M14x1_6GRANNIK) (ROMB) T1M3S2700G99 G0X18.Z5. G01Z0.2F0.1 X-1. Z2. G0X12. G1Z-1.7F0.14 X12.3 Z1. X10. Z-1.3 X10.3 Z1. X8. ........ T8 G0X0 Z0 M05 G4X0.5 M99 O0021 M70 M00 M71 M30 O0004(KR M18*1.5 L25.5) (ROMB) T1M3S3500G99 G0Z3.0M8 X3. G1Z0.F0.1 X18.Z-3.6F0.25 Z-20.3 G0X19.Z-3.73 G1X18. X-0.2Z0.F0.15 G0Z25. ....... |
Цитата:
|
Цитата:
|
Код:
@Echo Off |
Цитата:
Код:
gc test.txt|%{$i=0;$name="$i"+'.txt'}{if($_ -match '^O'){$i++;$name = "$i"+'.txt'};$_|ac $name} |
PowerShell, токмо через split:
Код:
# gc test.txt|%{$i=0;$name="$i"+'.txt'}{if($_ -match '^O'){$i++;$name = "$i"+'.txt'};$_|ac $name} |
Спасибо!
|
А реально сделать, что бы он файл называл не 1 или dest_1 а по названию программы в файле, если он вырезал O0003 то и файл будет называться 0003 или 3 или О0003 ?
Хотя и так отлично работает) |
Цитата:
в PowerShell работать будет? |
Artas28,
Цитата:
Цитата:
|
Цитата:
cls Set "BoxIn=C:\Newfolder\FileName.txt" Set "BoxOut=C:\Newfolder\" Set "Delim=O" Set "OutFile=Err.txt" FOR /F "usebackq delims=" %%i IN ("%BoxIn%") DO Call :Out "%BoxOut%" "%%i" pause Exit /B 0 :Out Set "Str=%~2" If "%Str:~0,1%"=="%Delim%" FOR /F "delims=(" %%j IN ("%Str%") DO ( Set "OutFile=%%j" 2>nul Del "%~1\%%j" ) >>"%~1\%OutFile%" Echo %~2 Exit /B 0 Так? |
Цитата:
Код:
$sDelim = 'O' |
Цитата:
Код:
Set "BoxOut=C:\Newfolder" |
Время: 21:20. |
Время: 21:20.
© OSzone.net 2001-