Windows Batch-Script - Попытка сохранить переменную в текстовый файл и затем загрузить его обратно в переменную при перезапуске - PullRequest
1 голос
/ 26 апреля 2011

Я пытаюсь сделать что-то, вероятно, довольно легко.

Я пытаюсь разрешить пользователям пакетного сценария Windows устанавливать цвет фона и сохранять его в текстовом файле, который затем загружается в переменную при каждом запуске сценария.

Пока у меня есть:

set / p ColourOpt = <% LogPath% \% UserName% _Options.Colour.log </p>

Загружает содержимое файла .log в переменную ColourOpt (% username% и% logpath% уже определены и работают нормально).

Затем я использую следующий код для применения опции:

If /I '%Colouropt%'=='0f' Color 0f
If /I '%Colouropt%'=='08' Color 08
If /I '%Colouropt%'=='0c' Color 0c
If /I '%Colouropt%'=='0d' Color 0d
If /I '%Colouropt%'=='0e' Color 0e
If /I '%Colouropt%'=='0a' Color 0a
If /I '%Colouropt%'=='1a' Color 1a
If /I '%Colouropt%'=='1c' Color 1c
If /I '%Colouropt%'=='1e' Color 1e
If /I '%Colouropt%'=='1f' Color 1f

Это также хорошо работает, и цвет устанавливается без проблем.

Теперь проблема, когда я использую сценарий для вывода настройки цвета пользователя в файл .log, он добавляет пробелы, которые теперь приводят к закрытию сценария вместо применения изменения.

Код, используемый для записи в файл .log:

IF /I '%Options%'=='1' Echo 0f>%LogPath%\%UserName%_Options.Colour.log & Set ColourOpt=0f & Color 0f

Это сохранит параметр в файле .log и сразу установит цвет, а также установит его в переменной.

Однако при этом выводится текстовый файл с пробелом после «0f» и пустой строкой под ним.

Есть ли способ вывести без пробелов или разрешить команде if игнорировать пробелы?

Любая помощь будет высоко оценена!

Спасибо!

1 Ответ

1 голос
/ 26 апреля 2011

Почему вы пытаетесь сделать это как одну операцию?В Windows были многострочные if блоки для возрастов:

IF /I '%Options%'=='1' (
    Echo 0f>%LogPath%\%UserName%_Options.Colour.log
    Set ColourOpt=0f
    Color 0f
)

Это фактически пространство, предшествующее первой &, которая выводится в файл, вы также можете исправить это с помощью:

IF /I '%Options%'=='1' Echo 0f>%blah%_Options.Colour.log& Set ColourOpt=...

(без пробела).

Если вы даже не хотите, чтобы заканчивались строки (т. Е. Если вы хотите, чтобы ваш файл состоял только из 0f), вы уже знаете половину хитрости:

<nul set /p junk=0f>xyz.txt& echo hello

Это создаст файл xyz.txt только с этими двумя символами - без дополнительного пробела и без окончания строки.

См. этот ответ для получения дополнительной информации и всех других ответов, включая еще несколько моих, для некоторых изящных приемов.

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