Bat прибавление числа из переменной к числу в txt файле?
Вообще суть такая ,проверить в папке наличие файла ,если нет создать с txt содержимым 1 внутри . Если он существует то прибавить 1 к числу которое содержится внутри . Набросать то набросал, но после считывания файла я никак не могу прибавить к нему число и записать обратно в файл
set path=D:\
IF EXIST %path%\tag.txt For /F "Delims=" %%I In (%path%\tag.txt) Do Set /a b=%%~I set b = %b% + 1 %b%>%path%\tag.txt
IF NOT EXIST %path%\tag.txt echo>%path%\tag.txt 1 >%path%\tag.txt
В итоге сделал так,в одну строку по какой то причине set не срабатывает
set LTO=C:\start\test\test
set c=%LTO%\tag.txt
IF EXIST %LTO%\tag.txt (
setlocal enabledelayedexpansion
For /F "Delims=" %%I In (%LTO%\tag.txt) Do Set /a b=%%~I
call set /a b+=1
echo !b!> "%c%"
copy %c% D:\co
endlocal
)
if not exist %LTO% mkdir %LTO%
IF NOT EXIST %LTO%\tag.txt echo>%LTO%\tag.txt 1 >%LTO%\tag.txt
Olgeir, а в cmd есть глобальные и локальные переменные? Каков синтаксис их объявления (c какой-то натяжкой можно упомянуть setlocal, но это не совсем то…)? Какая из переменных из моего примера глобальная, а какая локальная?
Не смотря на то, что все эти возможности заявлены производителем, я бы не рекомендовал всем этим пользоваться. Я натыкался на очень странное поведение, при использовании локальных/глобальных переменных и многострочных конструкций типа
for .... do (
....
....
)
Нужно просто помнить что CMD это на ЯП, что-то на нем можно сделать, но полноценно использовать не стоит. Если нужно сделать чтото очень сложное на bat то используй goto и не длинные под программы
call a1
...
:a1
...
goto :eof
Такой набор осечек не дает. Проверенно на батниках от 3к строк )))