我是Erlang的新手。我已经尝试对此进行研究,但是由于我是该语言的新手,并且对自己的代码感到困惑,因此请在此处发布。
我想遍历目录中的文件,并针对每个文件,基于文件名(减去其扩展名)运行命令。
例如,此(未调试的)批处理文件应循环访问XML文件的文件夹,将当前文件名存储在变量中(减去文件扩展名),然后下载同名的JPEG:
for %%a in (*.xml) do (
set "current_filename=%%~na"
wget -q -c -t 2 -0 "C:\Photos" "https://www.example.com/!current_filename!.jpg"
)
这是我当前的Erlang模块代码:
-module(erlangtest1).
-include_lib("kernel/include/file.hrl").
-compile(export_all).
ListXmlFiles() -> lists:foldl(fun(Filename) ->
FileInfo = file:read_file_info("C:/XML/" ++ Filename),
end, 0, Filenames).
到目前为止,我还停留在编写一个函数来检索文件名。完成此操作后,我将尝试通过os:cmd / 1运行wget。
答案 0 :(得分:2)
使用 filelib:wildcard 函数:
Filenames = filelib:wildcard("*.xml", "C:/XML")
答案 1 :(得分:1)
gather_filenames() ->
[ begin
"lmx." ++ NF = lists:reverse(FN),
lists:reverse(NF)
end || FN <- filelib:wildcard("*.xml", "C:/XML") ].
或更简单,但是当filename:rootname/1
引入时我不知道版本
gather_filenames() ->
[ filename:rootname(FN) || FN <- filelib:wildcard("*.xml", "C:/XML") ].