PDA

Показать полную графическую версию : [решено] замена символов в bat на символы, полученные по формуле


Alexander_88
19-08-2014, 13:31
Добрый день , я опять за помощью к умным людям.

Можно ли из txt файла вычислить количество строк, разделить это количество на число, которое я укажу, и полученный результат заменить на текст в другом бат файле?

К примеру, у меня есть 1.bat(который нужно написать), 2.bat и 3.txt


Я запускаю 1.bat. Он проверяет количество строк в файле 3.txt, делит его на число, которое я укажу, и результатом (получится целое число) заменит число в файле 2.bat. В файле 3.txt всегда будет лишняя пустая строка в конце, т.е. из количества строк необходимо отминусовать 1 и потом только разделить на число, которое я укажу.

файл 2.bat (в котором надо заменить) содержит следующий текст @(for /l %%i in (1 1 3) do @more<"in.txt")>.tmp& move .tmp "out.txt">nul

Число 3 (которое выделено жирным) в данном случае необходимо заменить, на результат, это число не всегда будет 3, оно может быть каким угодно, известно только то, что это цифра :dont-know

Iska
19-08-2014, 14:02
и результатом (получится целое число) заменит число в файле 2.bat. »
А вот делать сие не след. Нужно использовать в «2.bat» параметр. Т.е.:
@echo off

(for /l %%i in (1 1 %~1) do @more<"in.txt")>.tmp& move .tmp "out.txt">nul
Вызывать же пакетный файл с указанием фактического значения, например:
call 2.bat "3"

Можно ли из txt файла вычислить количество строк, разделить это количество на число, которое я укажу, »
Можно. Как будете указывать?

Alexander_88
19-08-2014, 14:15
указывать буду числа 1, 2, 14 и т.д, они будут небольшие , не больше 20

Iska
19-08-2014, 16:22
Говоря «Как будете указывать?» я имел в виду: присвоением «set Var=XX» в самом пакетном файле, , «set /p Var=Input value» — ручным вводом, параметром пакетного файла, вводом из файла. Как?

Georgio
19-08-2014, 16:23
Полностью согласен с коллегой Iska.


"1.bat":

@echo off

:: Заданное число:
set n=5

for /f %%a in ('"find /c /v ""<"3.txt""') do (
for /f %%b in ('set /a %%a/%n%') do (
call "2.bat" "%%b"
)
)

exit /b

.


"2.bat":

:: Для Вашего случая упростил код:
@(for /l %%i in (1 1 %~1) do @more)<"in.txt">"out.txt"& exit /b

.

Alexander_88
19-08-2014, 18:23
Проверил, то что нужно, спасибо, опять меня выручили :up




© OSzone.net 2001-2012