Задать вопрос
@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
Не взлетели (
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 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 ничего не выводит на консоль, если она выполнилась успешно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Wanted Москва
от 60 000 до 120 000 ₽
Wanted Санкт-Петербург
До 200 000 ₽
Wanted Москва
До 250 000 ₽