Поиск файла внутри номера n подпапки с использованием скрипта LUA - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу найти файл в n номере подпапки (в среде windows). Затем скопируйте этот файл и поместите в папку назначения.

1 Ответ

1 голос
/ 27 февраля 2020
function search_and_copy(filename, src_folder, dest_folder)
   local pipe = io.popen("reg query HKLM\\SYSTEM\\CurrentControlSet\\Control\\Nls\\CodePage /v ACP 2>nul:")
   local acp = pipe:read("*a"):match"ACP%s+REG_SZ%s+(%d+)"
   pipe:close()

   local function search_recursively(path)
      local src_filespec = path..filename
      local file = io.open(src_filespec)
      if file then
         file:close()
         return src_filespec
      end
      local subfolders = {}
      local pipe = io.popen((acp and 'chcp '..acp..'|' or '')..'dir /b/ad "' ..path..'*.*" 2>nul:')
      for line in pipe:lines() do
         table.insert(subfolders, line)
      end
      pipe:close()
      for _, subfolder_name in ipairs(subfolders) do
         src_filespec = search_recursively(path..subfolder_name.."\\")
         if src_filespec then
            return src_filespec
         end
      end
   end

   local src_filespec = search_recursively(src_folder:gsub("/", "\\"):gsub("\\*$", "\\"))
   if src_filespec then
      os.execute('copy /b "'..src_filespec..'" "'..dest_folder:gsub("/", "\\"):gsub("\\*$", "\\")..filename..'" 1>nul: 2>&1')
   end
end

-- find file.txt somewhere on drive C: and save it as D:\Found\file.txt
search_and_copy("file.txt", "C:\\", "D:\\Found")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...