Мне нужно сохранить выходной файл под именем файла на основе пути к текущему каталогу. Например, у меня есть текущий каталог и начальный набор данных определяется следующим образом:Извлечение имени файла из пути к каталогу
// current directory
cd "C:\Users\Raw data AA SYS BEST"
// the initial master dataset in "analysis" subfolder
use "analysis\master.dta" , clear
мне нужен выходной файл будет сохранен под именем «анализ \ output_AA_SYS_BEST.dta» в том же «анализ» вложенной.
Существовали две проблемы, с которыми я столкнулся:
(1), как извлечь часть имени каталога. Мне удалось найти полезную информацию о том, как использовать функцию substr()
для извлечения части списка имен файлов, хранящихся в том же каталоге (http://www.ats.ucla.edu/stat/stata/faq/append_many_files.htm), но не самой директории.
(2) Я попытался более простым способом определения локального макроса заранее, а затем конкатенации его с именем файла, но это не сработало, предположительно, из-за ошибки синтаксиса:
local x "AA SYS BEST"
save "analysis\test"_"`x'"_".dta"
Для (1), Я думаю, что «filelist» (из SSC) может быть полезен. См. Ответ http://stackoverflow.com/q/35558697/2077064, который может помочь. –
Роберто, спасибо за это, он действительно работает, если я назначу 'local x = substr (dirname, 10,10)'. Знаете ли вы, что также можно определить 'filelist, directory (" C: \ ... ")', не имея необходимости снова вводить весь путь? Что-то вроде 'filelist, directory (cd)'? – user2700264
Поместите путь в локальный макрос и используйте его после этого. –