Germany | Finland | Saint Petersburg | Drive

Переменные окружения в имени файла

Опубликовано в QLua

Иногда очень удобно в имени файла использовать переменные окружения DOS, такие как %windir% иди %temp%.


-- заменяет в имени файла (строке) переменные окружения на их значения
function io.expand_envvar(path)
   return string.gsub(path,"%%.-%%", function (env_str) return os.getenv(string.gsub(env_str,"%%","")) end)
end

Результаты (на моем компьютере):

%temp%\file.ext                   C:\Users\8FEE~1\AppData\Local\Temp\file.ext
%windir%\file.ext C:\Windows\file.ext
%comspec% C:\Windows\system32\cmd.exe

Комментарии   
# admin 26.12.2013 19:42
Можно также использовать готовый метод WScript. Например, для Амиброкера:

function ExpandEnvironmentString(str)
{ local ws;
ws = CreateObject("WScript.Shell");
return ws.ExpandEnvironmentStrings(str);
}
Ответить | Ответить с цитатой | Цитировать
# servig 17.10.2018 14:54
Здравствуйте.
В конце путей добавляет число "1".
Как избавиться?
Ответить | Ответить с цитатой | Цитировать
# admin 17.10.2018 15:30
Здравствуйте

gsub вторым параметром возвращает количество замен. В вашем случае заменв была одна.

Соответственно и вся функция возвращает 2 значения, второе из которых как раз ваша единица.

Хотите от нее избавиться ? Заключите в скобки выражение после return

return (string.gsub( ............. end))
Ответить | Ответить с цитатой | Цитировать
# servig 18.10.2018 00:25
Цитирую admin:
Здравствуйте

gsub вторым параметром возвращает количество замен. В вашем случае заменв была одна.

Соответственно и вся функция возвращает 2 значения, второе из которых как раз ваша единица.

Хотите от нее избавиться ? Заключите в скобки выражение после return

return (string.gsub( ............. end))


Спасибо за помощь и за отзывчивость, всё работает!
Ответить | Ответить с цитатой | Цитировать
Добавить комментарий


Архив QLua