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

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

zhxr 22-10-2017 17:43 2772475

Надо сконфигурировать последовательное исполнение команд
 
Здравствуйте, есть такой скрипт:
Код:

@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" не получается корректно исполнить.
Помогите пожалуйста с конфигурацией. Может скобки нужны или ещё что.

Iska 22-10-2017 17:53 2772478

Вот что это:
Цитата:

Цитата 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

?!

zhxr 22-10-2017 19:36 2772519

Здравствуйте, есть батник который крутится всё время.
В конце каждой рутины он вызывает другой батник и передаёт ему аргументы.
Код:

call Next.bat
На данный момент я желаю повысить информативность и пытаюсь вывести информацию в title.
Если очень упрощённо то:
Код:

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

Iska 22-10-2017 19:40 2772520

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

zhxr 22-10-2017 21:14 2772547

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! нет & и это работает?

Iska 22-10-2017 21:39 2772551

Цитата:

Цитата 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!

alpap 23-10-2017 00:30 2772592

Я полагаю что ТС требуется скорее не разовый запуск 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

для начального (нового) счета, файл нужно удалять.

Iska 23-10-2017 00:59 2772600

Цитата:

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

Так вроде ж так и работает.

alpap 23-10-2017 09:58 2772630

Цитата:

Цитата Iska
Так вроде ж так и работает. »

Действительно

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


Время: 07:04.

Время: 07:04.
© OSzone.net 2001-