1

Я столкнулся с проблемой при написании командного файла. Интересно, есть ли у кого-нибудь решение для меня. Этот файл очень длинный, поэтому я пытаюсь найти способ сделать меньше написания кода. У меня есть много эхо-сообщений, которые отображаются на несколько секунд, а затем исчезают, когда файл переходит к следующему экрану / коду. Я знаю, что могу написать что-то вроде этого ...

@echo off
echo Message
ping localhost -n 3 >nul
cls

Запись ping localhost -n 3 >nul каждый раз, когда я хочу задержку, занимает много времени. Я знаю, что могу копировать и вставлять, но это не идеально подходит для моей ситуации. У меня была идея установить переменную равной ping localhost -n 3 >nul записанный как,

set delay3=ping localhost -n 3 >nul

это позволило бы мне просто набрать %delay3% чтобы сэкономить время. Я обнаружил, что это работает нормально, но имеет побочный эффект. Когда написано так,

@echo off
set delay3=ping localhost -n 3 >nul
echo Message
%delay3%
cls

В моем командном файле все данные ping будут отображаться на экране, даже если я @echo off в начале сценария. Просто чтобы быть понятным, эти данные отображаются только на экране, когда я использую версию кода %delay3% . Кто-нибудь знает, как сделать так, чтобы данные ping не отображались на экране при кодировании таким образом?

1 ответ1

1

Как сделать так, чтобы данные ping не отображались на экране при кодировании таким образом?

Проблема с вашей командой set :

set delay3=ping localhost -n 3 >nul

>nul (используется для отбрасывания вывода) применяется к команде set и не сохраняется в переменной.

С другой стороны:

set "delay3=ping localhost -n 3 >nul"

Делай что хочешь.

Исправленный пакетный файл:

@echo off
set "delay3=ping localhost -n 3 >nul"
echo Message
%delay3%
cls
rem do other stuff
endlocal

Пример вывода:

> test
Message

>

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .