osob1
14-07-2014, 11:45
Доброго времени суток. Есть небольшая задача.
Суть задачи в том, что имеется excel`евская формула (точнее для googlesheets). В ней, кроме всего остального, есть 4 пары чисел, которые нужно заменить по принципу n=n+1
То есть, к примеру, 345 346 347 348 на 349 350 351 352. Затем на 353 354 355 356 и т.д. И таких проходов 50. Соответственно, вручную очень даже тягостно менять 200 чисел.
Утренняя задумка по автоматизации процесса немного не удалась.
@echo off
title Edit formuls
setlocal enabledelayedexpansion
set infile=inputfile.txt
set TMPFL=tempfile.txt
set newfile=newfile.txt
set find=348
set replace=352
copy !infile! !infile!.bak
copy !infile! !TMPFL!
pause
for /L %%i in (1,1,50) do (
for /L %%j in (1,1,4) do (
for /F "tokens=* delims=," %%n in (!TMPFL!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
set /A find=!find!-1
set /A replace=!replace!-1
echo !TMPR!>!TMPFL!
)
)
echo !TMPR!>>!newfile!
echo.>>!newfile!
set /A find=!find!+7
)
cls
echo Complete!
pause
exit
В выходном файле получаем 50 одинаковых формул.
Если необходимо, прикрепляю саму формулу (inputfile).
=IF(A15=$Z$345; $AD$345; (IF(A15=$Z$346; $AD$346; (IF(A15=$Z$347; $AD$347; (IF(A15=$Z$348; $AD$348; (IF(A15=$AF$345; $AJ$345; (IF(A15=$AF$346; $AJ$346; (IF(A15=$AF$347; $AJ$347; (IF(A15=$AF$348; $AJ$348; 0)))))))))))))))
"Протащить" ее не вариант. Даже дело не в том, что ссылки на ячейки абсолютные. (Хотя это одно из необходимых условий, но уже для другого). В общем, прошу помощи по батнику.
Собственно причина его неработоспособности была найдена. В третьем цикле, переменным find и replace не присваиваются новые значения. Гугл помог только в сторону setlocal enabledelayedexpansion. Если расширенную обработку включать именно в цикле, то вываливается в превышение рекурсии.
Суть задачи в том, что имеется excel`евская формула (точнее для googlesheets). В ней, кроме всего остального, есть 4 пары чисел, которые нужно заменить по принципу n=n+1
То есть, к примеру, 345 346 347 348 на 349 350 351 352. Затем на 353 354 355 356 и т.д. И таких проходов 50. Соответственно, вручную очень даже тягостно менять 200 чисел.
Утренняя задумка по автоматизации процесса немного не удалась.
@echo off
title Edit formuls
setlocal enabledelayedexpansion
set infile=inputfile.txt
set TMPFL=tempfile.txt
set newfile=newfile.txt
set find=348
set replace=352
copy !infile! !infile!.bak
copy !infile! !TMPFL!
pause
for /L %%i in (1,1,50) do (
for /L %%j in (1,1,4) do (
for /F "tokens=* delims=," %%n in (!TMPFL!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
set /A find=!find!-1
set /A replace=!replace!-1
echo !TMPR!>!TMPFL!
)
)
echo !TMPR!>>!newfile!
echo.>>!newfile!
set /A find=!find!+7
)
cls
echo Complete!
pause
exit
В выходном файле получаем 50 одинаковых формул.
Если необходимо, прикрепляю саму формулу (inputfile).
=IF(A15=$Z$345; $AD$345; (IF(A15=$Z$346; $AD$346; (IF(A15=$Z$347; $AD$347; (IF(A15=$Z$348; $AD$348; (IF(A15=$AF$345; $AJ$345; (IF(A15=$AF$346; $AJ$346; (IF(A15=$AF$347; $AJ$347; (IF(A15=$AF$348; $AJ$348; 0)))))))))))))))
"Протащить" ее не вариант. Даже дело не в том, что ссылки на ячейки абсолютные. (Хотя это одно из необходимых условий, но уже для другого). В общем, прошу помощи по батнику.
Собственно причина его неработоспособности была найдена. В третьем цикле, переменным find и replace не присваиваются новые значения. Гугл помог только в сторону setlocal enabledelayedexpansion. Если расширенную обработку включать именно в цикле, то вываливается в превышение рекурсии.