Помощь - Поиск - Пользователи - Календарь
Полная версия: Не обрабатывается файл с пробелом в имени
UoKit.com Форумы > Кликер > UO Pilot
slaze
Пишу скрипт на lua
Необходимо переместить .csv файл в другую папку
Имя файла содержит пробел, а filecopy и filerename из за этого не работают.
Путь к файлу указываю в [[ ]]
Есть ли выход?

p.s. бд выкачивается автоматом с таким кривым именем(
Fors1k
Код
--lua
pathIn  = [["C:\bd\1\fi le.csv"]]
pathOut = [["C:\bd\2\fi le.csv"]]
filecopy (pathIn, pathOut)

или
Код
--lua
pathIn  = [[C:\bd\1\fi le.csv]]
pathOut = [[C:\bd\2\fi le.csv]]
filecopy (string.format("%q", pathIn), string.format("%q", pathOut))
cirus
Код
--lua
local ffi = require("ffi")
ffi.cdef[[ bool CopyFileA(const char* lpExistingFileName, const char* lpNewFileName, bool bFailIfExists); ]]

-- скопировать файл
ffi.C.CopyFileA( [[C:\Новый текстовый документ.txt]], [[D:\Новый текстовый документ.txt]], false)
slaze
Спасибо, что откликнулись, ваши примеры помогли разобраться.

Проблема была в следующем:
я сканировал папку
Код
local resultarray, count = dir (path, "*.csv", "norecursion")

и использовал resultarray[1][1] и resultarray[2][1] в filecopy

Файл без пробела в имени нормально копировался, а с пробелом нет.
В итоге, помогло для второго:
Код
string.format("%q", resultarray[2][1])

Я так понимаю, заэкранировался пробел?
cirus
Цитата
Я так понимаю, заэкранировался пробел?

Нет.
string.format вернул строку в кавычках. Потому что C:\bd\1\fi le.csv и "C:\bd\1\fi le.csv" не одно и тоже. Издержки старого синтаксиса пилота.
slaze
Ясно. Странно только, что
filedelete нормально обрабатывает C:\bd\1\fi le.csv
а для filecopy и filerename требуется "C:\bd\1\fi le.csv"
cirus
Цитата
filedelete нормально обрабатывает C:\bd\1\fi le.csv

Потому что только один параметр.
А в filecopy и filerename их два, без кавычек строку C:\bd\1\fi le.csv они читают как C:\bd\1\fi и le.csv.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.