@KTG

Почему не срабатывает запись в файл?

@echo off
SetLocal EnableDelayedExpansion
for /F "delims=" %%i in (pack.id) do set pid=%%i
echo Last pack number: %pid%

	set /P pid_flag=Обновить номер пакета? [Y/N]:
	if /i %pid_flag% EQU y (
	
		set /A pid=%pid%+1 > pack.id	
		goto :end_pid_question
	) 
	if /i %pid_flag% EQU n (
		set pid=%pid%
	) ELSE (
		echo Try again...
		goto :pid_question
	)

Пустой вывод в файл. Да же при отсутствии файла pack.id они создаются, но ничего не записывается.
ПО факту нужно брать оттуда цифру, делать +1 и записывать обратно в файл.
если делаю: echo %pid% > pack.id
пишет что вывод команд echo отключен.
если делаю:echo+%pid%>pack.id то почему-то записывает 3 при первом запуске, и больше ничего.

2. Есть ещё вторая проблема
set /P pid_flag=Обновить номер пакета? [Y/N]:
Если не вводить символы и просто нажать Enter, то вываливается "ошибка синтаксиса".
А обработать на отсутствие данных не получается.
Пробовал:
if not defined
if not exist
if not
Не взлетели (
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
если делаю: echo %pid% > pack.id
пишет что вывод команд echo отключен.

Это происходит когда переменная %pid% не определена (отсутствует).
Если не вводить символы и просто нажать Enter, то вываливается "ошибка синтаксиса".

Ошибка возникает на этой строке:
if /i %pid_flag% EQU y
когда переменная %pid_flag% не определена. Используйте такой вариант:
if /i "%pid_flag%" EQU "y"
И не ясно какого вывода в файл вы ждете?
Если от этой команды:
set /A pid=%pid%+1 > pack.id
то не дождетесь - set ничего не выводит на консоль, если она выполнилась успешно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы