Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] замена символов в bat на символы, полученные по формуле (http://forum.oszone.net/showthread.php?t=286711)

Alexander_88 19-08-2014 13:31 2391201

замена символов в bat на символы, полученные по формуле
 
Добрый день , я опять за помощью к умным людям.

Можно ли из 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 2391221

Цитата:

Цитата Alexander_88
и результатом (получится целое число) заменит число в файле 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"
Цитата:

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

Можно. Как будете указывать?

Alexander_88 19-08-2014 14:15 2391241

указывать буду числа 1, 2, 14 и т.д, они будут небольшие , не больше 20

Iska 19-08-2014 16:22 2391318

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

Georgio 19-08-2014 16:23 2391320

Полностью согласен с коллегой 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 2391386

Проверил, то что нужно, спасибо, опять меня выручили :up


Время: 12:09.

Время: 12:09.
© OSzone.net 2001-