Переведите оба значения в режим Int (число), возможно сравниваются разные типы переменных
Работа с большими списками (файлами)
-
@Fox Спасибо. Пробовал так, но я же не знаю сколько "байт" будет. Можно было бы брать и 1 (допустим певую) строку, но их длина отличается. Т.е. если в файле есть список например:
00cats_ru 00ekb 00element00 00far.cry3 00g_o_d_l_i_k_e00 00ham1 00id17009256686 00karandash00 00l0l 00ladynatali777 00luxury00 00margo00 00mdkто я не могу указать конкретное число "Последний байт", т.к. у каждой строки разное кол-во.
Попробовал брать регуляркой
^.*$берёт то что надо, но вот вопрос как теперь удалить эту строку из "FILE_CONTENT" ?
Оно ведь не кладёт каждую строку в массив, а всё в 1 переменнуюFILE_CONTENT: "00g_o_d_l_i_k_e00 00margo00 00o00o0o0o00o00 00princess 00rub 00rules 00thenewworld00 00xam..." -
@lirik может проще будет разбить этот большой файл, на более мелкие по n количество строк, например с помощью KeyWordKeeper , и задать маску имени файла 1.txt, 2.txt и.т.д. И в цикле for потом пробегаемся по каждому файлику.
for 1 до n: применяем действие Читать файл или Читать файл в список указав в качестве пути C:/path/[[CYCLE_INDEX]].txtСкачать KeyWordKeeper : http://www.rusdocs.com/razrezat-tekstovyj-fajl-txt-na-chasti-ili-po-strokam
-
@santilo На самом деле так и делаю :) Но это жеж не феншуй совсем :(
Наверняка должен быть способ сделать без "лишних манипуляций"
Короче вот такое решение получается:- "Читать файл" - получаем переменную со списком
- Регуляркой берём строку
- "Заменить Строку" - заменяем на "ни что" (пустоту)
- есть ещё 1 проблема - как удалить пустую строку. Наверно javascript-ом, но я не умею :( Подскажите кто-то плз.
- "Сохранить файл"
-
@lirik сейчас можно сделать так, сложновато правда. Нужно в цикле читать по байтно файл до символа перевода строки, как только его встретили - собирать в строку. Правда не знаю, возможно в стандартном действии этот файл автоматически заменяется, то есть посмотреть на него нельзя будет, но нужно тестировать.
Как вариант - перенесите Ваш список в базу, тогда нагрузка точно упадет.
-
Варик с базой норм., но есть проблемка :( Этот файл заполняет другой проект. Т.е.
Проект 1 (парсер) заполняет файл baza.txt
Проект 2 (обработчик) берёт строку из файла baza.txt и "мандражирует" с ней :)
И всё это онлайн.
Проект 1 (парсер) заполняет файл baza.txt не построчно, а сразу неск. значений (массив) 5-10 - т.е. заливать в базу построчно "Вставить Запись" тоже не очень
@DrPrime а подскажи ПЛЗ как удалить пустую строку? Наверняка знаешь :) Что-то типо trim() или ещё как-тоFILE_CONTENT: " 00o00o0o0o00o00 00princess 00rub 00rules 00thenewworld00 00xam..." -
@lirik Если так принципиально именно разбить, то можно с помощью командной строки..
Запустить процессsetlocal enabledelayedexpansion set q=0 set N=100 for /F "delims= " %%i in (file.txt) do ( set /a q+=1 if !q! GTR !N! set /a N+=100 @echo %%i >> file!N!.txt )file.txt имя файла
цифра 100 это количество строк на которое разбивать файл (меняется в двух местах). -
@darmaed27 said in Работа с большими списками (файлами):
@Fox Как удалить пробелы в конце каждой строки в разбитых файлах?
Безопаснее использовать вариант через findstr. Вот вариант без дополнительных пробелов в каждой строке и без дополнительного переноса строки в конце каждого файла:
@echo off set "$file=file.txt" set $n=100 set $format=4 for /f %%i in (' set /a $format-1 ') do ( for /l %%j in (1 1 %%i) do ( call set zeros=0%%zeros%% ) ) for /f "delims=" %%j in (' findstr /n "^" "%$file%" ') do ( for /f "delims=:" %%i in ("%%j") do ( call :sub %%i "%%j" ) ) exit :sub set /a $m=(%1-1)/%$n%+1 set $m=%zeros%%$m% call set $m=%%$m:~-%$format%%% set "$string=%~2" for %%i in ("%$file%") do ( if not "%$i%"=="%$m%" ( type nul>"%%~ni%$m%%%~xi" ) set /a count+=1 ( for /f %%j in (' call echo %%count%% ') do ( if not %%j==%$n% ( ( for /f "delims=" %%k in ("%$string:*:=%") do ( echo.%%k ) )|| ( echo. ) ) else ( ( for /f "delims=" %%k in ("%$string:*:=%") do ( set /p=%%k<nul set count= ) )|| ( echo. set count= ) ) ) )>>"%%~ni%$m%%%~xi" ) set $i=%$m% exit /bПеременные:
$file- название файла
$n- количество строк в одном файле
$format- формат нумерации файлов (4 означает четырёхзначное число, file0001, file0002 и т.д) -
@darmaed27 said in Работа с большими списками (файлами):
@Fox Разбиваю объекты json с переносом строк на файлы. Строка объекта рушится, если в нем есть символ "!". Как это можно пофиксить?
Для json подойдёт и такой код:
@echo off set "$file=file.txt" set $n=2 for /f "tokens=1* delims=[]" %%i in ('find /v /n "" ^<%$file%') do set "$j=%%j"& call :sub %%i exit :sub set /a $m=(%~1-1)/%$n%+1 set $m=0%$m% set $m=%$m:~-2% if not "%$i%"=="%$m%" type nul >%$file%%$m%.txt >>%$file%%$m%.txt echo.%$j% set $i=%$m%& exit /bПеременные те же, пробелов в конце строк не будет. Единственный минус, это стёртые квадратные скобки в начале строки:
из[[[[[[[[[[[[]]1[][][][][]][[[] [2"!@!@#!@%^$&%*в
1[][][][][]][[[] 2"!@!@#!@%^$&%*
