|
WSH архивация данных | ☑ | ||
---|---|---|---|---|
0
men47
06.06.14
✎
16:21
|
Народ, выручайте, киданите код скрипта в WSH, пожалуйста, как создать zip-архив и поместить файл в него.
Google помог с VB, но я не понял, как создавать в WSH. Т.к. я в этом языке новичок. =( |
|||
1
shuhard
06.06.14
✎
16:23
|
(0) ну да
вечер пятницы на форуме 1С-ников лучшее время для поиска скриптов |
|||
2
Jump
06.06.14
✎
16:27
|
wsh.Run ("строка запуска консольного архиватора с парметрами")
|
|||
3
men47
06.06.14
✎
18:25
|
вот пытаюсь сделать
WScript.Run("'C:\Program Files\7-Zip\7z.exe' a 'D:\TMP\\' 'D:\test.7z'"); не получается, подскажите, где не правильно |
|||
4
men47
06.06.14
✎
18:27
|
(2) при wsh так же выдает Объект не поддерживает это свойство или метод
|
|||
5
Jump
06.06.14
✎
18:47
|
(4)Полный код скрипта приведи.
|
|||
6
men47
06.06.14
✎
18:48
|
Немного кривовато, но вот так=)))
function findFile(){ var dateFile=new Date(file.DateLastModified); var delta=d-dateFile; if(delta<=days*86400000) { objDoc .Content.InsertAfter("Дата:"+d+" "+"Имя файла:"+file.Name+" "+"Место расположение:"+f.Path+" "+"Дата создания:"+dateFile); objDoc .Content.InsertAfter("\n"); objFSO.CopyFile(file.Path, OutTmp); } } function findFiles(cFolder, d, days) { var newFolder=true; //перебираем все файлы очередной папки var cFiles=new Enumerator(cFolder.Files); for(;!cFiles.atEnd(); cFiles.moveNext()) { var cFile=cFiles.item(); //Создаем объект типа date c датой последней модификации файла var dateFile=new Date(cFile.DateLastModified); var delta=d-dateFile; if(delta<=days*86400000) { if(newFolder) { newFolder=false; // objDoc .Content.InsertAfter("---- Папка: "+cFolder.Path+" -------"); // objDoc .Content.InsertAfter("\n"); } objDoc .Content.InsertAfter("Дата:"+d+" "+"Имя файла:"+cFile.Name+" "+"Место расположение:"+cFolder.Path+" "+"Дата создания:"+dateFile); //objDoc .Content.InsertAfter(cFile.Name); objDoc .Content.InsertAfter("\n"); cFile.Copy(OutTmp); } } } var objFSO = WScript.CreateObject("Scripting.FileSystemObject"); var objWord = WScript.CreateObject("Word.Application.15"); var objDoc = objWord.Documents.Add(); var FilefullName, fso, f, file, days, fp; var d = new Date(); //получаем текущую дату var data; var ArcFile; var OutArc = "D:\\"; var OutTmp = "D:\TMP\\"; var Arc="C:\Program Files\7-Zip\7z.exe a "; WScript.StdOut.WriteLine("Введите путь папки"); FilefullName=WScript.StdIn.ReadLine(); fso = new ActiveXObject("Scripting.FileSystemObject"); var objFolder = objFSO.CreateFolder(OutTmp); f = fso.GetFolder(FilefullName); fc = new Enumerator(f.Files); WScript.StdOut.WriteLine("Введите день"); days=WScript.StdIn.ReadLine(); for(; !fc.atEnd(); fc.moveNext()) { NameFolder = fc.Name; file=fc.item(); findFile(); } fc = new Enumerator(f.SubFolders); for(; !fc.atEnd(); fc.moveNext()) { file=fc.item(); findFiles(file, d, days); } objDoc.SaveAs("D:\\test.doc"); objDoc.Close(); objWord.Quit(); ArcFile = OutArc +"test.7z"; NArc = ArcFile+" "; NTmp = OutTmp+"*.*"; WScript.Run(Arc+NArc+NTmp); |
|||
7
Лефмихалыч
06.06.14
✎
18:51
|
слэши экранировать надо. В jscript в строковых литералах слэш надо так писать "\\".
"c:\\foo\bar\\cmd.exe" |
|||
8
men47
06.06.14
✎
18:53
|
(7) пока не сильно критично, + код не подредактирован, он сырой еще, вопрос был в другом, как правильно обращаться к программе, чтобы она(программа) заархивировала папку.
|
|||
9
men47
06.06.14
✎
18:55
|
(8) + вижу ошибку, забыл исправить.
var Arc="'C:\Program Files\7-Zip\7z.exe' a "; |
|||
10
Лефмихалыч
06.06.14
✎
18:56
|
(8) что значит "пока не сильно критично"?
|
|||
11
Лефмихалыч
06.06.14
✎
18:57
|
пля, да дело в слэшах, а не в кавычках. И кавычки в jscript вот так пишутся: "\"c:\\foo\\bar\""
|
|||
12
men47
06.06.14
✎
19:02
|
(11) хорошо, заэкранировал проблема не ушла, поподробнее на счет кавычек. Код, который вы привели либо не правильный, либо не хватает еще кавычек спереди.
|
|||
13
men47
06.06.14
✎
19:07
|
(11) либо приведите простой пример, как правильно обращаться к архиватору, а то в самом деле, может быть не в кавычках дело.
Например, есть 1 файл с названием 1.txt на диске С(ну или Д), как правильно обратиться, чтобы заархивировать его. |
|||
14
Jump
06.06.14
✎
19:26
|
(6)может я невнимательно смотрел но я не нашел где создаеться объект WScript.Shell
Примерно так Wsh = WScript.CreateObject('WScript.Shell'); Wsh.Run("D:\\rar.exe a D:\\test.txt"); |
|||
15
Jump
06.06.14
✎
19:27
|
(13)Слеши дублируй \\, все что содержит пробелы в двойные кавычки ""тут был пробел""
|
|||
16
men47
06.06.14
✎
19:31
|
(13) а где указывать куда сохранять, или куда программа сохранит?
|
|||
17
men47
06.06.14
✎
19:33
|
(15) как я правильно понял
Wsh = WScript.CreateObject('WScript.Shell'); Wsh.Run("DC:\\Program Files\\7-Zip\\7z.exe a D:\\TMP"); |
|||
18
men47
06.06.14
✎
19:34
|
(17) ой
Wsh = WScript.CreateObject('WScript.Shell'); Wsh.Run("C:\\Program Files\\7-Zip\\7z.exe a D:\\TMP"); |
|||
19
Jump
06.06.14
✎
19:35
|
(16)ну почитай справку по конкретному архиватору
D раре это так- Wsh.Run("D:\\rar.exe a D:\\test.rar D:\\test.txt"); |
|||
20
Jump
06.06.14
✎
19:37
|
т.е строка запуска выглядит как -
путь к архиватору команда архивации путь к архиву путь к файлам которые положить в архив |
|||
21
men47
06.06.14
✎
19:42
|
(20) это я понял, вот смотри... я закидываю вот так:
Wsh.Run("C:\\Program Files\\7-Zip\\7z.exe a D:\\TMP"); он мне пишет Не удается найти указанный файл. Хотя по пути 7z.exe присутствует. Так же пробовал через 7zFM.exe (в той же папке лежит), тоже самое выдает. И еще, я могу архивировать папки, или только файлы? |
|||
22
men47
06.06.14
✎
19:42
|
оп, вижу ошибку, не успел прочитать (19) пункт
|
|||
23
men47
06.06.14
✎
19:44
|
неа, все равно при (19) пункте, тоже самое выдает
|
|||
24
men47
06.06.14
✎
19:47
|
(20) попытался указать конечный файл, а точнее Wsh.Run("C:\\Program Files\\7-Zip\\7zFM.exe a D:\\test.rar D:\\TMP\\logback-test.xml");
тоже самое, похоже он не видит сам 7z архиватор.... сейчас попробую обратится к другому архиватору |
|||
25
Jump
06.06.14
✎
19:51
|
(21)Можно и папки.
В строке ошибка Путь содержащий пробелы надо брать в двойные кавычки. |
|||
26
Jump
06.06.14
✎
19:52
|
Wsh.Run("""C:\\Program Files\\7-Zip\\7z.exe"" a D:\\TMP");
|
|||
27
men47
06.06.14
✎
19:56
|
(26) закинул так как вы дали, выдал ошибку Предполагается ")" на 11 символе, т.е.
Wsh.Run(""(ВОТ ТУТ)"C:\\Program Files\\7-Zip\\7z.exe"" a D:\\TMP"); |
|||
28
men47
06.06.14
✎
20:01
|
(26) расположил 7z прям в корне диск Д обратился вот так
Wsh.Run("D:\\7z.exe a D:\\test.7z D:\\TMP"); архив создался АЛИЛУЯ, но желательно сделать обычную директорию программы=( |
|||
29
men47
06.06.14
✎
20:06
|
все, нашел. Спасибо, Jump, за помощь, без тебя больше времени бы потерял.
Решением проблемы было следующее: Wsh.Run('"C:\\Program Files\\7-Zip\\7z.exe" a D:\\test.7z D:\\TMP'); |
|||
30
Jump
06.06.14
✎
21:04
|
(28)Как вариант можно добавить путь к архиватору в переменные окружения ОС, и тогда для обращения к архиватору не придется указывать путь.
По поводу этой строки - Wsh.Run("""C:\\Program Files\\7-Zip\\7z.exe"" a D:\\TMP"); Тут вероятно из за тройных кавычек вначале одна съедалась, надо было экранировать ее слешем что то типа ""\" Поэтому и синтаксис нарушился из за нечетности кавычек. Ну фиг с ним работает и ладно. |
|||
31
SergeyKB
06.06.14
✎
22:22
|
(0) в БСП посмотрите там неслабый скриптик забабахали
|
|||
32
Лефмихалыч
06.06.14
✎
23:41
|
тьфутыпропасть!
Wsh.Run("\"C:\\Program Files\\7-Zip\\7z.exe\" a D:\\TMP"); да почитайте вы оть справку что ли! Двойные кавычки в jscript - это пустая строка. |
|||
33
Злопчинский
07.06.14
✎
00:34
|
фигня какаяч-то.. дайте лучше команду архивирования втроенной поддержкой архивов виндой...
? |
|||
34
vcv
07.06.14
✎
08:16
|
(33) Вот встроенное разархивирование.
http://forum.infostart.ru/forum9/topic98082/message1015639/#message1015639 Архивирование должно быть где-то аналогично. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |