Может есть DLL какая-нибудь для этого? Или ещё что? Не очень мне хочется внешний архиватор использовать.
» Autoplay Media Studio
KerberX
Цитата:
В данном случаем проще поступить именно так, чем написать работающий код..
Цитата:
Не очень мне хочется внешний архиватор использовать.
В данном случаем проще поступить именно так, чем написать работающий код..
Robby
Большое спасибо! Все работает, кроме прочтения пункта "разрешение" из ини, ну думаю разберусь. Еще раз спасибо за помощь.
Большое спасибо! Все работает, кроме прочтения пункта "разрешение" из ини, ну думаю разберусь. Еще раз спасибо за помощь.
Тогда не поможете ли мне в использовании 7z.exe от 7-Zip'а? Никак не получается написать нужную команду для архивации моего списка.
KerberX
Код: Shell.Execute("AutoPlay\\Docs\\7zg.exe", "open", " a -t7z -y \""Путьдля архива\\имя_архива.7z\" \""Путь к папке с файлами\\*\"", "", SW_HIDE, true);
Код: Shell.Execute("AutoPlay\\Docs\\7zg.exe", "open", " a -t7z -y \""Путьдля архива\\имя_архива.7z\" \""Путь к папке с файлами\\*\"", "", SW_HIDE, true);
а можно как-то в указанной директории получить таблицу названий файлов с расширениями и папок.(желательно файлы и папки в отдельных таблицах)?
SuperDimon007
Код: local tFilesName = {};
local tDirsName = {};
local tFounded = File.Find("C:\\Program Files\\AutoPlay Media Studio 8 Trial", "*.*", false, true, nil, nil);
if tFounded then
local tPaths
for i = 1, #tFounded do
if File.GetAttributes(tFounded[i]).Directory then
tDirsName[#tDirsName + 1] = String.Mid(tFounded[i], String.ReverseFind(tFounded[i], "\\") + 1, -1);
else
tPaths = String.SplitPath(tFounded[i]);
tFilesName[#tFilesName + 1] = tPaths.Filename..tPaths.Extension;
end
end
end
Dialog.Message("Notice", Table.Concat(tFilesName, "\r\n", 1, TABLE_ALL).."\r\n\r\n"..Table.Concat(tDirsName, "\r\n", 1, TABLE_ALL));
Код: local tFilesName = {};
local tDirsName = {};
local tFounded = File.Find("C:\\Program Files\\AutoPlay Media Studio 8 Trial", "*.*", false, true, nil, nil);
if tFounded then
local tPaths
for i = 1, #tFounded do
if File.GetAttributes(tFounded[i]).Directory then
tDirsName[#tDirsName + 1] = String.Mid(tFounded[i], String.ReverseFind(tFounded[i], "\\") + 1, -1);
else
tPaths = String.SplitPath(tFounded[i]);
tFilesName[#tFilesName + 1] = tPaths.Filename..tPaths.Extension;
end
end
end
Dialog.Message("Notice", Table.Concat(tFilesName, "\r\n", 1, TABLE_ALL).."\r\n\r\n"..Table.Concat(tDirsName, "\r\n", 1, TABLE_ALL));
Хоть ты тресни не понимаю как мой список архивировать правильно. Есть такой список (это пример, не обязательно такой):
[more=Список]
C:\Program Files\Internet Explorer\en-US\hmmapi.dll.mui
C:\Program Files\Internet Explorer\en-US\ielowutil.exe.mui
C:\Program Files\Internet Explorer\en-US\jsdebuggeride.dll.mui
C:\Program Files\Internet Explorer\en-US\JSProfilerCore.dll.mui
C:\Program Files\Internet Explorer\ru-RU\iedvtool.dll.mui
C:\Program Files\Internet Explorer\ru-RU\ieinstal.exe.mui
C:\Program Files\Internet Explorer\ru-RU\iexplore.exe.mui
C:\Program Files\Internet Explorer\ru-RU\jsdbgui.dll.mui
C:\Program Files\Internet Explorer\ru-RU\jsprofilerui.dll.mui
C:\Program Files\Internet Explorer\SIGNUP\install.ins
C:\Program Files\Internet Explorer\ExtExport.exe
C:\Program Files\Internet Explorer\hmmapi.dll
C:\Program Files\Internet Explorer\ie8props.propdesc
C:\Program Files\Internet Explorer\iecompat.dll
C:\Program Files\Internet Explorer\iedvtool.dll
C:\Program Files\Internet Explorer\ieinstal.exe
C:\Program Files\Internet Explorer\ielowutil.exe
C:\Program Files\Internet Explorer\ieproxy.dll
C:\Program Files\Internet Explorer\IEShims.dll
C:\Program Files\Internet Explorer\iessetup.ceb
C:\Program Files\Internet Explorer\iessetup.dll
C:\Program Files\Internet Explorer\iexplore.exe
C:\Program Files\Internet Explorer\jsdbgui.dll
C:\Program Files\Internet Explorer\jsdebuggeride.dll
C:\Program Files\Internet Explorer\JSProfilerCore.dll
C:\Program Files\Internet Explorer\jsprofilerui.dll
C:\Program Files\Internet Explorer\msdbg2.dll
C:\Program Files\Internet Explorer\pdm.dll
C:\Program Files\Internet Explorer\sqmapi.dll
[/more]
Есть команда:
s7zG = Путь к этому 7zg.exe
sArchive - Полный путь к создаваемому архиву
sFilesList - Полный путь к списку файлов
sQuote - это у меня кавычка, чтобы не писать вручную.
Код: local nRet = Shell.Execute(s7zG, "open", " a -tzip -y "..sQuote..sArchive..sQuote.." -ir@"..sFilesList.." -scsWIN", "", SW_SHOWNORMAL, true);
[more=Список]
C:\Program Files\Internet Explorer\en-US\hmmapi.dll.mui
C:\Program Files\Internet Explorer\en-US\ielowutil.exe.mui
C:\Program Files\Internet Explorer\en-US\jsdebuggeride.dll.mui
C:\Program Files\Internet Explorer\en-US\JSProfilerCore.dll.mui
C:\Program Files\Internet Explorer\ru-RU\iedvtool.dll.mui
C:\Program Files\Internet Explorer\ru-RU\ieinstal.exe.mui
C:\Program Files\Internet Explorer\ru-RU\iexplore.exe.mui
C:\Program Files\Internet Explorer\ru-RU\jsdbgui.dll.mui
C:\Program Files\Internet Explorer\ru-RU\jsprofilerui.dll.mui
C:\Program Files\Internet Explorer\SIGNUP\install.ins
C:\Program Files\Internet Explorer\ExtExport.exe
C:\Program Files\Internet Explorer\hmmapi.dll
C:\Program Files\Internet Explorer\ie8props.propdesc
C:\Program Files\Internet Explorer\iecompat.dll
C:\Program Files\Internet Explorer\iedvtool.dll
C:\Program Files\Internet Explorer\ieinstal.exe
C:\Program Files\Internet Explorer\ielowutil.exe
C:\Program Files\Internet Explorer\ieproxy.dll
C:\Program Files\Internet Explorer\IEShims.dll
C:\Program Files\Internet Explorer\iessetup.ceb
C:\Program Files\Internet Explorer\iessetup.dll
C:\Program Files\Internet Explorer\iexplore.exe
C:\Program Files\Internet Explorer\jsdbgui.dll
C:\Program Files\Internet Explorer\jsdebuggeride.dll
C:\Program Files\Internet Explorer\JSProfilerCore.dll
C:\Program Files\Internet Explorer\jsprofilerui.dll
C:\Program Files\Internet Explorer\msdbg2.dll
C:\Program Files\Internet Explorer\pdm.dll
C:\Program Files\Internet Explorer\sqmapi.dll
[/more]
Есть команда:
s7zG = Путь к этому 7zg.exe
sArchive - Полный путь к создаваемому архиву
sFilesList - Полный путь к списку файлов
sQuote - это у меня кавычка, чтобы не писать вручную.
Код: local nRet = Shell.Execute(s7zG, "open", " a -tzip -y "..sQuote..sArchive..sQuote.." -ir@"..sFilesList.." -scsWIN", "", SW_SHOWNORMAL, true);
KerberX
7zip действительно как-то своебразно работает со списком файлов... Rar все нормально архивирует с сохранением путей. Тебе нужно чтобы архив обязательно был zip?
7zip действительно как-то своебразно работает со списком файлов... Rar все нормально архивирует с сохранением путей. Тебе нужно чтобы архив обязательно был zip?
KerberX
Вообще есть способ обойтись и без внешних архиваторов. Если все получится - выложу сэмпл.
Вообще есть способ обойтись и без внешних архиваторов. Если все получится - выложу сэмпл.
Robby, да обязательно zip. Zloy_Gelud, надеюсь получится.
KerberX
Мда. Вообщем, что получается... как ни крути, хоть используй WinApi, хоть COM-интефейс, получается, что придется использовать дополнительное копирование необходимых файлов из таблицы в отдельную папку. Ну а уж потом, файлы из этой папки архивировать. Т.е.получаем лишнее копирование. Неудобно конечо, но другого способа, к сожалению, я больше не вижу. Если тебя такая затея устраивает, то можно и набросать код.
Мда. Вообщем, что получается... как ни крути, хоть используй WinApi, хоть COM-интефейс, получается, что придется использовать дополнительное копирование необходимых файлов из таблицы в отдельную папку. Ну а уж потом, файлы из этой папки архивировать. Т.е.получаем лишнее копирование. Неудобно конечо, но другого способа, к сожалению, я больше не вижу. Если тебя такая затея устраивает, то можно и набросать код.
Я могу и сам такой код сделать, но набросай, вдруг твой способ лучше. У меня была идея удалять из имени файла один символ и заменять его на символ маски (?). Но у меня с этим что-то не получилось.
KerberX
а если не использовать список в командной строке, а просто в цикле пройтись по таблице добавляя по одному файлу в архив. Да уж 7-zip разочаровал несохранение путей это большой минус.
а если не использовать список в командной строке, а просто в цикле пройтись по таблице добавляя по одному файлу в архив. Да уж 7-zip разочаровал несохранение путей это большой минус.
Всё равно в корень лезут. Один раз даже фатальную ошибку выдал: "Move file error". Думал что если в качестве рабочей папки указать папку с обрабатываемым файлом, то выйдет, а нет.
KerberX
Код: Zip.AddEx = function (sZipFile, tFiles)
--------------------------------------
-- создание временной папки
local sTempFolderName = "";
repeat
sTempFolderName = "";
while #sTempFolderName < 7 do
sTempFolderName = sTempFolderName .. String.Char(Math.Random(97, 122));
end
sTempFolderName = _TempFolder.."\\~"..sTempFolderName..".tmp";
until not Folder.DoesExist(sTempFolderName);
if not Folder.DoesExist(sTempFolderName) then Folder.Create(sTempFolderName); end
--------------------------------------
local tPaths, sNewPath
for i = 1, #tFiles do
tPaths = String.SplitPath(tFiles[i]);
sNewPath = sTempFolderName.."\\"..tPaths.Folder;
Folder.Create(sNewPath);
File.Copy(tFiles[i], sNewPath, false, true, false, false, nil);
end
Zip.Add(sZipFile, {sTempFolderName.."\\*.*"}, true, "", 5, nil, true);
Folder.DeleteTree(sTempFolderName, nil);
end
local t = {};
t[1] = "C:\\1.txt";
t[2] = "C:\\Folder1\\2.txt";
t[3] = "C:\\Folder2\\3.txt";
Zip.AddEx("C:\\123.zip", t);
Код: Zip.AddEx = function (sZipFile, tFiles)
--------------------------------------
-- создание временной папки
local sTempFolderName = "";
repeat
sTempFolderName = "";
while #sTempFolderName < 7 do
sTempFolderName = sTempFolderName .. String.Char(Math.Random(97, 122));
end
sTempFolderName = _TempFolder.."\\~"..sTempFolderName..".tmp";
until not Folder.DoesExist(sTempFolderName);
if not Folder.DoesExist(sTempFolderName) then Folder.Create(sTempFolderName); end
--------------------------------------
local tPaths, sNewPath
for i = 1, #tFiles do
tPaths = String.SplitPath(tFiles[i]);
sNewPath = sTempFolderName.."\\"..tPaths.Folder;
Folder.Create(sNewPath);
File.Copy(tFiles[i], sNewPath, false, true, false, false, nil);
end
Zip.Add(sZipFile, {sTempFolderName.."\\*.*"}, true, "", 5, nil, true);
Folder.DeleteTree(sTempFolderName, nil);
end
local t = {};
t[1] = "C:\\1.txt";
t[2] = "C:\\Folder1\\2.txt";
t[3] = "C:\\Folder2\\3.txt";
Zip.AddEx("C:\\123.zip", t);
Спасибо! Вот только если файл большой то долго будет копироваться. А можно как-нибудь создавать структуру архива относительно какой нибудь папки, а не корня диска?
KerberX
Цитата:
Это да.
Цитата:
Не понял. Сейчас вся структура создается во временной папки Windows.
Цитата:
Вот только если файл большой то долго будет копироваться.
Это да.
Цитата:
А можно как-нибудь создавать структуру архива относительно какой нибудь папки, а не корня диска?
Не понял. Сейчас вся структура создается во временной папки Windows.
Видишь ли у меня в архиве была структура от C:\Users\...\Desktop. Если на примере с моим списком мне нужно чтобы в корне были файлы: ExtExport.exe, hmmapi.dll, ... sqmapi.dll и папки en-US, ru-RU. Надеюсь понятно.
[more]
C:\Program Files\Internet Explorer\en-US\hmmapi.dll.mui
C:\Program Files\Internet Explorer\en-US\ielowutil.exe.mui
C:\Program Files\Internet Explorer\en-US\jsdebuggeride.dll.mui
C:\Program Files\Internet Explorer\en-US\JSProfilerCore.dll.mui
C:\Program Files\Internet Explorer\ru-RU\iedvtool.dll.mui
C:\Program Files\Internet Explorer\ru-RU\ieinstal.exe.mui
C:\Program Files\Internet Explorer\ru-RU\iexplore.exe.mui
C:\Program Files\Internet Explorer\ru-RU\jsdbgui.dll.mui
C:\Program Files\Internet Explorer\ru-RU\jsprofilerui.dll.mui
C:\Program Files\Internet Explorer\SIGNUP\install.ins
C:\Program Files\Internet Explorer\ExtExport.exe
C:\Program Files\Internet Explorer\hmmapi.dll
C:\Program Files\Internet Explorer\ie8props.propdesc
C:\Program Files\Internet Explorer\iecompat.dll
C:\Program Files\Internet Explorer\iedvtool.dll
C:\Program Files\Internet Explorer\ieinstal.exe
C:\Program Files\Internet Explorer\ielowutil.exe
C:\Program Files\Internet Explorer\ieproxy.dll
C:\Program Files\Internet Explorer\IEShims.dll
C:\Program Files\Internet Explorer\iessetup.ceb
C:\Program Files\Internet Explorer\iessetup.dll
C:\Program Files\Internet Explorer\iexplore.exe
C:\Program Files\Internet Explorer\jsdbgui.dll
C:\Program Files\Internet Explorer\jsdebuggeride.dll
C:\Program Files\Internet Explorer\JSProfilerCore.dll
C:\Program Files\Internet Explorer\jsprofilerui.dll
C:\Program Files\Internet Explorer\msdbg2.dll
C:\Program Files\Internet Explorer\pdm.dll
C:\Program Files\Internet Explorer\sqmapi.dll
[/more]
Вот так:
Сейчас у меня так:
[more]
C:\Program Files\Internet Explorer\en-US\hmmapi.dll.mui
C:\Program Files\Internet Explorer\en-US\ielowutil.exe.mui
C:\Program Files\Internet Explorer\en-US\jsdebuggeride.dll.mui
C:\Program Files\Internet Explorer\en-US\JSProfilerCore.dll.mui
C:\Program Files\Internet Explorer\ru-RU\iedvtool.dll.mui
C:\Program Files\Internet Explorer\ru-RU\ieinstal.exe.mui
C:\Program Files\Internet Explorer\ru-RU\iexplore.exe.mui
C:\Program Files\Internet Explorer\ru-RU\jsdbgui.dll.mui
C:\Program Files\Internet Explorer\ru-RU\jsprofilerui.dll.mui
C:\Program Files\Internet Explorer\SIGNUP\install.ins
C:\Program Files\Internet Explorer\ExtExport.exe
C:\Program Files\Internet Explorer\hmmapi.dll
C:\Program Files\Internet Explorer\ie8props.propdesc
C:\Program Files\Internet Explorer\iecompat.dll
C:\Program Files\Internet Explorer\iedvtool.dll
C:\Program Files\Internet Explorer\ieinstal.exe
C:\Program Files\Internet Explorer\ielowutil.exe
C:\Program Files\Internet Explorer\ieproxy.dll
C:\Program Files\Internet Explorer\IEShims.dll
C:\Program Files\Internet Explorer\iessetup.ceb
C:\Program Files\Internet Explorer\iessetup.dll
C:\Program Files\Internet Explorer\iexplore.exe
C:\Program Files\Internet Explorer\jsdbgui.dll
C:\Program Files\Internet Explorer\jsdebuggeride.dll
C:\Program Files\Internet Explorer\JSProfilerCore.dll
C:\Program Files\Internet Explorer\jsprofilerui.dll
C:\Program Files\Internet Explorer\msdbg2.dll
C:\Program Files\Internet Explorer\pdm.dll
C:\Program Files\Internet Explorer\sqmapi.dll
[/more]
Вот так:
Сейчас у меня так:
KerberX
Цитата:
Понятно. Сейчас попробую поправить.
Добавлено:
Код: -- sZipFile - полный путь к архиву
-- tFiles - таблица файлов
-- nWorkDir - уровень рабочей папки (0 - корень диска)
Zip.AddEx = function (sZipFile, tFiles, nWorkDir)
nWorkDir = nWorkDir or 0;
--------------------------------------
-- создание временной папки
local sTempFolderName = "";
repeat
sTempFolderName = "";
while #sTempFolderName < 7 do
sTempFolderName = sTempFolderName .. String.Char(Math.Random(97, 122));
end
sTempFolderName = _TempFolder.."\\~"..sTempFolderName..".tmp";
until not Folder.DoesExist(sTempFolderName);
if not Folder.DoesExist(sTempFolderName) then Folder.Create(sTempFolderName); end
--------------------------------------
local tPaths, sNewPath, sFolder, nInd, nPos
for i = 1, #tFiles do
if File.DoesExist(tFiles[i]) then
tPaths = String.SplitPath(tFiles[i]);
sFolder = String.TrimLeft(tPaths.Folder, "\\");
if nWorkDir > 0 then
nInd = nWorkDir;
nPos = String.Find(sFolder, "\\", 1, false);
while (nPos ~= -1 and nInd ~= 0) do
sFolder = String.Mid(sFolder, nPos + 1, -1);
nInd = nInd - 1;
nPos = String.Find(sFolder, "\\", 1, false);
end
end
sNewPath = sTempFolderName.."\\"..sFolder;
Folder.Create(sNewPath);
File.Copy(tFiles[i], sNewPath, false, true, false, false, nil);
end
end
Zip.Add(sZipFile, {sTempFolderName.."\\*.*"}, true, "", 5, nil, true);
Folder.DeleteTree(sTempFolderName, nil);
end
Zip.AddEx("C:\\123.zip", t, 2);
Цитата:
Надеюсь понятно.
Понятно. Сейчас попробую поправить.
Добавлено:
Код: -- sZipFile - полный путь к архиву
-- tFiles - таблица файлов
-- nWorkDir - уровень рабочей папки (0 - корень диска)
Zip.AddEx = function (sZipFile, tFiles, nWorkDir)
nWorkDir = nWorkDir or 0;
--------------------------------------
-- создание временной папки
local sTempFolderName = "";
repeat
sTempFolderName = "";
while #sTempFolderName < 7 do
sTempFolderName = sTempFolderName .. String.Char(Math.Random(97, 122));
end
sTempFolderName = _TempFolder.."\\~"..sTempFolderName..".tmp";
until not Folder.DoesExist(sTempFolderName);
if not Folder.DoesExist(sTempFolderName) then Folder.Create(sTempFolderName); end
--------------------------------------
local tPaths, sNewPath, sFolder, nInd, nPos
for i = 1, #tFiles do
if File.DoesExist(tFiles[i]) then
tPaths = String.SplitPath(tFiles[i]);
sFolder = String.TrimLeft(tPaths.Folder, "\\");
if nWorkDir > 0 then
nInd = nWorkDir;
nPos = String.Find(sFolder, "\\", 1, false);
while (nPos ~= -1 and nInd ~= 0) do
sFolder = String.Mid(sFolder, nPos + 1, -1);
nInd = nInd - 1;
nPos = String.Find(sFolder, "\\", 1, false);
end
end
sNewPath = sTempFolderName.."\\"..sFolder;
Folder.Create(sNewPath);
File.Copy(tFiles[i], sNewPath, false, true, false, false, nil);
end
end
Zip.Add(sZipFile, {sTempFolderName.."\\*.*"}, true, "", 5, nil, true);
Folder.DeleteTree(sTempFolderName, nil);
end
Zip.AddEx("C:\\123.zip", t, 2);
То что надо. Понять бы только как высчитывать этот уровень. Он ведь везде разный. Но с этим я сам справлюсь.
KerberX
Цитата:
А что тут высчитывать? Например:
C:\Program Files\Internet Explorer\SIGNUP
0: C:
1: Program Files
2: Internet Explorer
3: SIGNUP
Соответственно, если необходимо архивировать файлы/папки относительно папки Internet Explorer, то уровень будет равен 2. Или я опять не понял чего-то?
Цитата:
Понять бы только как высчитывать этот уровень. Он ведь везде разный.
А что тут высчитывать? Например:
C:\Program Files\Internet Explorer\SIGNUP
0: C:
1: Program Files
2: Internet Explorer
3: SIGNUP
Соответственно, если необходимо архивировать файлы/папки относительно папки Internet Explorer, то уровень будет равен 2. Или я опять не понял чего-то?
Ну путь то и другой может быть. Не заставлять же пользователя вручную считать.
Как Explorer стал ссылкой?
Как Explorer стал ссылкой?
KerberX
Цитата:
Ну можно в качестве параметра указывать кусок пути, который нужно отрезать, например, C:\Program Files\Internet Explorer\
Цитата:
Форум спамит.
http://forum.ru-board.com/topic.cgi?forum=13&topic=2300
Цитата:
Ну путь то и другой может быть. Не заставлять же пользователя вручную считать.
Ну можно в качестве параметра указывать кусок пути, который нужно отрезать, например, C:\Program Files\Internet Explorer\
Цитата:
Как Explorer стал ссылкой?
Форум спамит.
http://forum.ru-board.com/topic.cgi?forum=13&topic=2300
Цитата:
Ну можно в качестве параметра указывать кусок пути, который нужно отрезать, например, C:\Program Files\Internet Explorer\
Да ладно! Что ж ты сразу то не сказал! Пойду ещё тестить.
KerberX
Цитата:
Ага. Только код перепиши немного.
Цитата:
Да ладно! Что ж ты сразу то не сказал! Пойду ещё тестить.
Ага. Только код перепиши немного.
Может скажешь что надо переписать, а то я в твоём коде буду целый день разбираться.
KerberX
Код: -- sZipFile - полный путь к архиву
-- tFiles - таблица файлов
-- sWorkPath - рабочая папка
Zip.AddEx = function (sZipFile, tFiles, sWorkPath)
sWorkPath = sWorkPath or "";
--------------------------------------
-- создание временной папки
local sTempFolderName = "";
repeat
sTempFolderName = "";
while #sTempFolderName < 7 do
sTempFolderName = sTempFolderName .. String.Char(Math.Random(97, 122));
end
sTempFolderName = _TempFolder.."\\~"..sTempFolderName..".tmp";
until not Folder.DoesExist(sTempFolderName);
if not Folder.DoesExist(sTempFolderName) then Folder.Create(sTempFolderName); end
--------------------------------------
local tPaths, sNewPath, sFolder
for i = 1, #tFiles do
if File.DoesExist(tFiles[i]) then
tPaths = String.SplitPath(tFiles[i]);
if sWorkPath ~= "" then
if String.Right(sWorkPath, 1) ~= "\\" then sWorkPath = sWorkPath .. "\\"; end
sFolder = String.Mid(tPaths.Drive..tPaths.Folder, #sWorkPath + 1, -1);
else
sFolder = String.TrimLeft(tPaths.Folder, "\\");
end
sNewPath = sTempFolderName.."\\"..sFolder;
Folder.Create(sNewPath);
File.Copy(tFiles[i], sNewPath, false, true, false, false, nil);
end
end
Zip.Add(sZipFile, {sTempFolderName.."\\*.*"}, true, "", 5, nil, true);
Folder.DeleteTree(sTempFolderName, nil);
end
t = TextFile.ReadToTable("C:\\1.txt");
Zip.AddEx("C:\\123.zip", t, "C:\\Program Files\\Internet Explorer");
Код: -- sZipFile - полный путь к архиву
-- tFiles - таблица файлов
-- sWorkPath - рабочая папка
Zip.AddEx = function (sZipFile, tFiles, sWorkPath)
sWorkPath = sWorkPath or "";
--------------------------------------
-- создание временной папки
local sTempFolderName = "";
repeat
sTempFolderName = "";
while #sTempFolderName < 7 do
sTempFolderName = sTempFolderName .. String.Char(Math.Random(97, 122));
end
sTempFolderName = _TempFolder.."\\~"..sTempFolderName..".tmp";
until not Folder.DoesExist(sTempFolderName);
if not Folder.DoesExist(sTempFolderName) then Folder.Create(sTempFolderName); end
--------------------------------------
local tPaths, sNewPath, sFolder
for i = 1, #tFiles do
if File.DoesExist(tFiles[i]) then
tPaths = String.SplitPath(tFiles[i]);
if sWorkPath ~= "" then
if String.Right(sWorkPath, 1) ~= "\\" then sWorkPath = sWorkPath .. "\\"; end
sFolder = String.Mid(tPaths.Drive..tPaths.Folder, #sWorkPath + 1, -1);
else
sFolder = String.TrimLeft(tPaths.Folder, "\\");
end
sNewPath = sTempFolderName.."\\"..sFolder;
Folder.Create(sNewPath);
File.Copy(tFiles[i], sNewPath, false, true, false, false, nil);
end
end
Zip.Add(sZipFile, {sTempFolderName.."\\*.*"}, true, "", 5, nil, true);
Folder.DeleteTree(sTempFolderName, nil);
end
t = TextFile.ReadToTable("C:\\1.txt");
Zip.AddEx("C:\\123.zip", t, "C:\\Program Files\\Internet Explorer");
Спасибо! Вот теперь именно то.
Добрый день господа. Стыдно спрашивать. Мне нужно сделать поиск в нескольких папках, но выходит ошибка. Что я сделал не правильно?
Код: tblfolders = {};
tblfolders[1] = _SourceFolder .. "\\AutoPlay\\Docs\\1\\Base";
tblfolders[2] = _SourceFolder .. "\\AutoPlay\\Docs\\2\\Base";
t_Files = File.Find(tblfolders, "*.avi", true, false, nil, nil);
Код: tblfolders = {};
tblfolders[1] = _SourceFolder .. "\\AutoPlay\\Docs\\1\\Base";
tblfolders[2] = _SourceFolder .. "\\AutoPlay\\Docs\\2\\Base";
t_Files = File.Find(tblfolders, "*.avi", true, false, nil, nil);
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
Предыдущая тема: Media Player Classic - Home Cinema (MPC-HC)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.