Помощь - Поиск - Пользователи - Календарь
Полная версия: работа с папками
UoKit.com Форумы > Кликер > UO Pilot
portos
всем здравия , помогите решить задачу на lua

в "D:\4" находятся N количество папок
в текстовом документе "D:\1.txt" записаны новые названия папок в столбик
как переименовать папки на новые названия (папок может быть больше чем новых названий)
и после переместить только те папки ,в которых изменили названия в папку "D:\5"
заранее благадарю
cirus
Цитата
в текстовом документе "D:\1.txt" записаны новые названия папок в столбик

Новое название для конкретной папки?
Например, папку 123 переименовать в 123new или в любое имя из списка?
portos
Цитата(cirus @ 19.12.2020, 1:22) *

Новое название для конкретной папки?
Например, папку 123 переименовать в 123new или в любое имя из списка?

имя из списка . допустим папка с именем - *Новая папка 1* ,взять из текста первую строку *ффф_ккк* и заменить ,чтобы папка называлась *ффф_ккк* ,и желательно переместить в другое место (D:\6). И так по списку из 1.txt пока он не станет пустой
cirus
код
Код
--lua
local ffi = require("ffi")
ffi.cdef[[ bool MoveFileA(const char* lpExistingFileName, const char* lpNewFileName); ]]

log 'clear' log 'mode compact'

local path = [[D:\4]]        -- путь к папке
local path_output = [[D:\5]] -- куда переместить новые папки
local path_txt = [[D:\1.txt]]  -- файл с новыми именами
local resultarray, count = dir (path, '', 'norecursion')
log('Всего файлов/папок: ' .. tostring(count))
log()

dircreate (string.format('%q', path_output))   -- создать папку куда перемещать переименованные папки

local name_folder = {}
local h_file = io.open(path_txt, 'r')
if h_file then
    for line in h_file:lines() do
        name_folder[#name_folder+1] = line
    end
    h_file:close()
    log('Имён в файле ' .. tostring(#name_folder))

    local count_folder_rename = 0
    for i=1, count do
        if resultarray[i][4] == '' then
            if count_folder_rename < #name_folder then
                -- переименование
                ffi.C.MoveFileA(resultarray[i][1], resultarray[i][2] .. name_folder[count_folder_rename+1])
                log(resultarray[i][1], resultarray[i][2] .. name_folder[count_folder_rename+1])

                -- перемещение
                ffi.C.MoveFileA(resultarray[i][2] .. name_folder[count_folder_rename+1], path_output  .. '\\' .. name_folder[count_folder_rename+1])
                log(resultarray[i][2] .. name_folder[count_folder_rename+1], path_output  .. '\\' .. name_folder[count_folder_rename+1])
                count_folder_rename = count_folder_rename + 1
                log()
            end
        end
    end
else
    log('Файл не открылся')
end
portos
именно так ,спасибо

хотел у Вас узнать по другому скрипту ,с которым Вы мне помогли ,надо перейти в ту тему со скриптом ?
Fors1k
D:\4:
Цитата
Новая папка (1)
Новая папка (2)
Новая папка (3)

1.txt:
Цитата
qwe
asd

D:\4\Новая папка (1) -> D:\5\qwe
D:\4\Новая папка (2) -> D:\5\asd
D:\4\Новая папка (3) - не трогать
Так должно получиться?

Код
--lua
require"luaposh";log"clear"
PScode('void',{[[#}
$pathIN  = 'D:\4'
$pathOUT = 'D:\5'
$pathTxt = 'D:\1.txt'

$folders = gci -dir $pathIN
gc $pathTxt|ForEach{$i=0}{move $folders.fullname[$i++] "$pathOUT\$_"}
]]})
portos
выдаёт ошибку

2:46:35 37 (autosaved_37.txt, 0): Lua загружен.
2:46:35 37 (autosaved_37.txt, 0): a runtime error.
2: module 'luaposh' not found:
no field package.preload['luaposh']
no file '.\luaposh.lua'
no file 'C:\Users\portos\Downloads\lua\luaposh.lua'
no file 'C:\Users\portos\Downloads\lua\luaposh\init.lua'
no file
2:48:05 37 (autosaved_37.txt, 0): a runtime error.
2: module 'luaposh' not found:
no field package.preload['luaposh']
no file '.\luaposh.lua'
no file 'C:\Users\portos\Downloads\lua\luaposh.lua'
no file 'C:\Users\portos\Downloads\lua\luaposh\init.lua'
no file

скрипт cirus работает корректно

не кидайте предупреждение ,потому что со сполером ни как не получается отправить
Fors1k
Цитата(portos @ 19.12.2020, 3:56) *

выдаёт ошибку

Скачайте один раз архив
https://forum.uokit.com/index.php?showtopic=70167
И выполните update. Больше такая рошибка не появится
Цитата(portos @ 19.12.2020, 3:56) *

со сполером ни как не получается отправить

Почему так? Вот его тэг:
Код
[spoiler=abc]текст[/spoiler]

Тут, кстати, еще подсказка естьНажмите для просмотра прикрепленного файла
У вас не срабатывает?
portos
ничего не происходит ,ошибка уже не показывает
Fors1k
Цитата(portos @ 19.12.2020, 4:23) *

ошибка уже не показывает
Это хорошо)
Цитата(portos @ 19.12.2020, 4:23) *

ничего не происходит

Пилот запускается от админа?
Полезные сведения -> Настройки перед использованием Проверьте пункты 1, 2 ,3 и перезапустите пилот.
portos
закачал по новому пилот ,провёл все танцы с бубном . ничего не происходит )) скрипт от cirus работает как надо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.