Сохранение переменных в текстовом файле - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь загрузить и сохранить переменные в файл.
Например:

@echo off
set /a number=1
echo %number%>text.txt

Как сохранить число из текстового файла в переменной, например variable1?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Как упомянул от aschipfl, есть два способа сделать это:

  1. Используя set /P (перенаправить переменную в текстовый файл и прочитать (файл) с помощью set /p).
  2. Разбор файла с использованием цикла for /F.

Поскольку первый способ уже упомянут Тивом, я буду иметь дело только свторой.Вы должны сделать:

@echo off
set "number=1"
(echo %number%)>text.txt
for /F "delims= eol=" %%A IN (text.txt) do set "variable1=%%A"

Обратите внимание, что:

  • /a опция в set используется только для выполнения арифметических операций.Это не значит, что если у вас есть /a, интерпретатор «увидит» это как число.
  • Добавлены скобки для безопасности;не echo пробел в текстовом файле, потому что echo %number%>txt не будет работать , если %number% равно <10 </strong>, потому что 0 - это STDIN, 1 - это STDOUT, 2 - это STDERR и числаот 3 до 9 не определены.Это похоже на то, что вы посылаете STDIN / STDOUT / STDERR / UNDEFINED ничего в файл.

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

0 голосов
/ 24 февраля 2019

Ваш код приведет к проблеме, лучше изменить на:

@echo off
set /a number=1
>text.txt echo %number%

Другой способ последней строки:

echo %number% 1>text.txt

1 означает STDOUT, поэтомуВаш код не будет записывать 1 в файл text.txt.

И чтобы прочитать файл в variable1:

set /p variable1=<text.txt

Обратите внимание, что если в файле несколько строк, в variable1. * 1017 будет прочитана только первая строка.*

Из комментария и немного изменилось:

if not exist "%~dp0settings.gsf" ( 
    echo.>"%~dp0settings.gsf" 
    goto :createsave 
) else ( 
    echo Reading your savefile... 
    set /p lang=<settings.gsf
)

%~dp0 закончится \, поэтому нет необходимости добавлять еще \.
. Вы должны закрыть else блок, и лучше сделать отступ и поставить ) else ( в одну строку.
Попробуйте изменить в соответствии с этим, посмотрите, работает ли он.
- Отступ хорош для удобочитаемости и отладки, в других языках программирования тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...