1

これが私がluaでやろうとしてきたことです。

2台以上のコンピューター間でやり取りする写真がたくさんあります。私はいつも写真の複数のコピーを持っていることになります。luaコードでフォルダーからすべてのファイル名を取得し、プログラムがファイル名のリストと比較する検索フィルター(ファイル名)を入力して、フォルダーに既に存在するかどうかを通知できるようにします。いいえ。私はこれを機能させるために過去数日間頭を悩ませてきましたが、運が悪いです。これまでに作成したテキストボックスだけで、luaにフォルダ内のファイルに関するデータを返すことができます。

local f = io.popen("dir \"C:\\mydir\\\"")
if f then
    print(f:read("*a"))
else
    print("failed to read")
end
4

2 に答える 2

3

標準の Lua には、やりたいことを実行するメカニズムがありません。大規模で機能豊富なランタイム ライブラリを持つ Python とは異なり、組み込みシステム向けに設計されたスクリプト言語です。

これを行いたい場合は、Lua FileSystem モジュールの使用を検討する必要があります。ディレクトリリストなどを取得できます。

于 2012-12-02T01:33:28.927 に答える
1

いくつかのフォルダからファイル名の配列を取得する方法:

local function get_files(path, prepend_path_to_filenames)
   if path:sub(-1) ~= '\\' then
      path = path..'\\'
   end
   local pipe = io.popen('dir /b/a-d "'..path..'*.*" 2> nul')
   local output = pipe:read'*a'
   pipe:close()
   -- If your file names contain national characters
   -- output = convert_OEM_to_ANSI(output)
   local files = {}
   for filename in output:gmatch'[^\r\n]+' do
      if prepend_path_to_filenames then
         filename = path..filename
      end
      table.insert(files, filename)
   end
   return files
end

local array_of_files = get_files('C:\\mydir', false)
for _, fn in ipairs(array_of_files) do
   print(fn)
end

パスが存在しない場合は、空の配列が返されます (空のフォルダーと存在しないフォルダーの区別はありません)。

于 2012-12-02T04:22:33.013 に答える