Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Надо сконфигурировать последовательное исполнение команд

Ответить
Настройки темы
CMD/BAT - Надо сконфигурировать последовательное исполнение команд

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, есть такой скрипт:
Код: Выделить весь код
@echo off
chcp 65001>nul
set /p Var=<counter.txt
set /a "Var+=1"
echo %Var% >counter.txt
....
Читает число из файла, прибавляет единицу и пишет результат обратно в файл.
Теперь пытаюсь поместить всю эту радость в одну строку:
Код: Выделить весь код
setlocal enabledelayedexpansion
set "BuildN=set /p Var=<counter & set /a "Var+=1" & echo !Var! & echo !Var! >counter"
прога %BuildN% ещё аргументы
но с кавычками не справляюсь.
Пока даже set "BuildN=set /p Var=<counter & set /a "Var+=1" & echo %Var% & echo %Var% >counter" не получается корректно исполнить.
Помогите пожалуйста с конфигурацией. Может скобки нужны или ещё что.

Отправлено: 17:43, 22-10-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Вот что это:
Цитата zhxr:
set "BuildN=set /p Var=<counter »
такое? Для чего это?

Вы хотите получить нечто наподобие:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sBuildNumberFile=counter.txt
<"%sBuildNumberFile%" set /p iBuildNumber= & set /a iBuildNumber += 1 & >"%sBuildNumberFile%" echo !iBuildNumber!
прога.exe %iBuildNumber% ещё аргументы

endlocal
exit /b 0
?!
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:53, 22-10-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, есть батник который крутится всё время.
В конце каждой рутины он вызывает другой батник и передаёт ему аргументы.
Код: Выделить весь код
call Next.bat
На данный момент я желаю повысить информативность и пытаюсь вывести информацию в title.
Если очень упрощённо то:
Код: Выделить весь код
call "Считаем плюс один и передаём результат в переменную bild" & title %times run% х %bild% & Next.bat
С %times run% проблем нет это считается отдельно и изменяется редко. Но с %bild% у меня загвоздка.
Проблема в том что всё включая счётчик надо поместить в одну строку
иначе тайтл не меняется. А у меня проблема с скобками.
Я не настолько опытен что бы самому справится.
Я попытался вставить то что вы написали.
На тестовом файле счётчик работает и заголовок меняется.
Но в живую не работает. Я пока не разобрался как именно исполняется
ваш код.

Отправлено: 19:36, 22-10-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


zhxr, без полного кода навряд ли можно будет что-то сказать.

Отправлено: 19:40, 22-10-2017 | #4


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, скажите пожалуйста что именно делают угловые скобки?
Это экранирование? Совсем не понимаю последовательность исполнения.
<"counter.txt" set /p iBuildNumber= & set /a iBuildNumber += 1 & >"counter.txt" echo !iBuildNumber!
Как разделить это на этапы?
1)
Код: Выделить весь код
"counter.txt" set /p iBuildNumber=
Почему не set /p iBuildNumber="counter.txt"?
2)
Код: Выделить весь код
set /a iBuildNumber += 1
3) < 1) + 2) > пишем в "counter.txt"
4) echo !iBuildNumber!
Почему перед echo !iBuildNumber! нет & и это работает?

Отправлено: 21:14, 22-10-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата zhxr:
Iska, скажите пожалуйста что именно делают угловые скобки? »
Перенаправление потоков.

Цитата zhxr:
Это экранирование? »
Нет. Экранирование делается посредством «^».

Цитата zhxr:
Совсем не понимаю последовательность исполнения.
<"counter.txt" set /p iBuildNumber= & set /a iBuildNumber += 1 & >"counter.txt" echo !iBuildNumber!
Как разделить это на этапы? »
Код: Выделить весь код
<"%sBuildNumberFile%" set /p iBuildNumber=
set /a iBuildNumber += 1
>"%sBuildNumberFile%" echo %iBuildNumber%
Цитата zhxr:
Почему не set /p iBuildNumber="counter.txt"? »
Видимо, имелось в виду «Почему не «set /p iBuildNumber=<"%sBuildNumberFile%"»?»

В данном случае какой-то принципиальной разницы нет, где будет находиться перенаправление — до команды или после. Можно и так, и так.

Цитата zhxr:
4) echo !iBuildNumber!
Почему перед echo !iBuildNumber! нет & и это работает? »
Есть перед echo «&»:
Код: Выделить весь код
<"%sBuildNumberFile%" set /p iBuildNumber= & set /a iBuildNumber += 1 & >"%sBuildNumberFile%" echo !iBuildNumber!
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:39, 22-10-2017 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Я полагаю что ТС требуется скорее не разовый запуск bat и чтобы при следующем запуске число в файле увеличивалось по отношению к последнему записанному, а не первоначальному, код должен быть такой:
Код: Выделить весь код
@echo off
set "f=file.txt"
(if exist "%f%" <"%f%" set /p n=)& set /a n+=1& >"%f%" cmd /v/c echo:!n!
pause>nul
для начального (нового) счета, файл нужно удалять.

Отправлено: 00:30, 23-10-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата alpap:
и чтобы при следующем запуске число в файле увеличивалось по отношению к последнему записанному, а не первоначальному »
Так вроде ж так и работает.

Отправлено: 00:59, 23-10-2017 | #8


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Iska:
Так вроде ж так и работает. »
Действительно

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

Отправлено: 09:58, 23-10-2017 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Надо сконфигурировать последовательное исполнение команд

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Выполнение команд без ожидания завершение предыдущих команд vngreez@vk Скриптовые языки администрирования Windows 8 31-03-2017 23:50
CMD/BAT - [решено] исполнение команд из bat файла riff6666 Скриптовые языки администрирования Windows 5 04-12-2014 17:17
Delphi - Последовательное выполнение функций Delfi 7 Kosh1ro Программирование и базы данных 1 24-10-2013 23:19
PowerShell - Последовательное выполнение команд из txt rvm.luma Скриптовые языки администрирования Windows 5 06-09-2013 14:21
Wireless - Последовательное соединение wifi роутеров YDen Сетевое оборудование 6 24-03-2013 15:53




 
Переход