2016-03-03 5 views
0

Мне нужно сохранить выходной файл под именем файла на основе пути к текущему каталогу. Например, у меня есть текущий каталог и начальный набор данных определяется следующим образом:Извлечение имени файла из пути к каталогу

// 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

Для (1), Я думаю, что «filelist» (из SSC) может быть полезен. См. Ответ http://stackoverflow.com/q/35558697/2077064, который может помочь. –

+0

Роберто, спасибо за это, он действительно работает, если я назначу 'local x = substr (dirname, 10,10)'. Знаете ли вы, что также можно определить 'filelist, directory (" C: \ ... ")', не имея необходимости снова вводить весь путь? Что-то вроде 'filelist, directory (cd)'? – user2700264

+0

Поместите путь в локальный макрос и используйте его после этого. –

ответ

1

On (1) Я не понимаю, в чем проблема, и не вижу примера кода.

На (2) это должно работать:

local x "AA SYS BEST" 
save "analysis\test_`x'_.dta" 

Но берегитесь, если обратные косые и локальные имена макросов упираться. Вместо этого используйте косые черты. Так что это должно не работы

local x "AA SYS BEST" 
save "analysis\`x'_.dta" 

, но это должно работать, даже в Windows,

local x "AA SYS BEST" 
save "analysis/`x'_.dta" 

Более подробную информацию о обратной косой черты см 18.3.1 http://www.stata.com/manuals14/u18.pdf или http://www.stata-journal.com/sjpdf.html?articlenum=pr0042