Пакетная переменная эхо

Вопрос или проблема

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

Вот что у меня есть на данный момент:

:varecho
echo %GAMEPIN% > variables.txt
echo %NICKNAME% >> variables.txt
goto launch

Это просто записывает “ECHO отключен” в variables.txt:

Как мне получить содержимое переменных в файл?

Я предполагаю, что ваши переменные %GAMEPIN% или %NICKNAME% пусты.

Когда вы используете “echo” без ничего рядом с ним или с пустой переменной, вы получаете ответ о том, включен ли эхо.

Как видно здесь, я объявляю пустую переменную, и когда я делаю echo, так как она пустая, она просто сообщает, включено ли эхо или отключено.

Я получаю ответ ECHO включено/выключено

Таким образом, убедитесь, что ваши переменные правильно объявлены.

@echo off 

set /p "GAMEPIN= Введите ваш игровой PIN: " 
set /p "NICKNAME= Введите ваше НИКНЭЙМ: "

call :varecho "%GAMEPIN%" "%NICKNAME%"
goto launch

:varecho
>variables.txt (echo\%~1&echo\%~2) & exit /b

:launch
....
  • Или…
@echo off & cd /d "%~dp0"

set /p "GAMEPIN= Введите ваш игровой PIN: " 
set /p "NICKNAME= Введите ваше НИКНЭЙМ: "

> .\variables.txt (
    call :varecho %GAMEPIN% %NICKNAME%
   ) & goto :launch

:varecho
echo\%~1
echo\%~2
exit /b

:launch
....

Ответ или решение

Эхо переменных в пакетном файле: Полное руководство

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

Проблема: Пустые переменные

Как вы справедливо заметили, если переменные %GAMEPIN% или %NICKNAME% пустые, команда echo будет выводить сообщение "ECHO is off" в файл variables.txt. Это происходит потому, что команда echo не имеет аргумента, и в результате выводит состояние echo (включено или выключено). Прежде всего, убедитесь, что значения переменных корректно запрашиваются у пользователя.

Решение: Запись значений переменных в файл

В вашем изначальном коде есть правильная идея, но несколько недоработок. Вот пример, как можно перезаписать ваш код для правильной записи:

@echo off 
setlocal

rem Получаем ввод от пользователя
set /p "GAMEPIN=Введите ваш Game PIN: " 
set /p "NICKNAME=Введите ваше имя: "

rem Вызов функции для записи переменных в файл
call :varecho "%GAMEPIN%" "%NICKNAME%"
goto launch

:varecho
rem Перезаписываем файл variables.txt
(
    echo %~1
    echo %~2
) > variables.txt
exit /b

:launch
rem Ваш дальнейший код...

Объяснение кода

  1. @echo off — отключает отображение команд, улучшая читаемость вывода.
  2. setlocal — ограничивает эффект изменений переменных окружения только текущим скриптом.
  3. set /p — позволяет пользователю вводить значения для переменных GAMEPIN и NICKNAME.
  4. call :varecho — вызывает метку :varecho с параметрами, которые передаются как аргументы (значения переменных).
  5. Echo внутри блока — выполняется в контексте ( ... ), что позволяет сохранить значения в variables.txt корректно.
  6. exit /b — завершает функцию без выхода из основного скрипта.

Оптимизация и улучшение

Для улучшения структуры вашего скрипта и добавления обработчика ошибок, вы можете сделать следующее:

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

Вот улучшенная версия:

@echo off 
setlocal

rem Запрос ввода у пользователя
set /p "GAMEPIN=Введите ваш Game PIN: " 
set /p "NICKNAME=Введите ваше имя: "

rem Проверка на пустые значения
if "%GAMEPIN%"=="" (
    echo Ошибка: Game PIN не может быть пустым.
    goto :eof
)

if "%NICKNAME%"=="" (
    echo Ошибка: Имя не может быть пустым.
    goto :eof
)

rem Вызов функции для записи переменных в файл
call :varecho "%GAMEPIN%" "%NICKNAME%"
goto launch

:varecho
(
    echo Game PIN: %~1
    echo Nickname: %~2
) > variables.txt
exit /b

:launch
rem Ваш дальнейший код...

Заключение

Таким образом, вы получите работоспособный пакетный файл, который будет корректно сохранять переменные в текстовом файле для дальнейшего использования. Обратите внимание на обработку ошибок, это повысит надежность вашего скрипта. Если у вас возникнут дополнительные вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...