Приветствую всех.
Задача проста, скрипт должен бесшумно архивировать все файлы в дирректории и удалять их после архивирования. Хорошо бы, конечно, по расширению определять и исключать архивы, но можно и без этого.
Написал, как смог, прошу сильно не пинать.
читать дальше »
Код:
$K='"'
$DEL = "DEL /F /Q "
$7z = '7-Zip\7z.exe'
$ArchOptions = ' -mmt -ms=off'
$CurrentDir= @ScriptDir & '\'
$ProgramFilesDir = @ProgramFilesDir & '\'
$Search = FileFindFirstFile("*.*")
If $Search = -1 Then
Exit
EndIf
While 1
$File = FileFindNextFile($Search)
If @error Then
ExitLoop
ElseIf $File = @ScriptName Then
$File = FileFindNextFile($Search)
EndIf
$ArchiveName = $File & '.7z'
$Archivate = $K & $ProgramFilesDir & $7z & $K & ' a -mx9 ' & $ArchiveName & ' ' & $File & $ArchOptions
Archivate($File)
WEnd
Func Archivate($File)
RunWait(@ComSpec & ' /c ' & $Archivate, "")
RunWait(@ComSpec & ' /c ' & $DEL & $K & $CurrentDir & $File & $K, "")
EndFunc
FileClose($Search)
Сыроват, будет доработан, это всё понятно. Столкнулся с проблемой и не могу решить. Если имена файлов содержат пробелы, их необходимо заключать в кавычки. Ок, попробовал сделать вот так:
читать дальше »
Код:
$K='"'
$DEL = "DEL /F /Q "
$7z = '7-Zip\7z.exe'
$ArchOptions = ' -mmt -ms=off'
$CurrentDir= @ScriptDir & '\'
$ProgramFilesDir = @ProgramFilesDir & '\'
$Search = FileFindFirstFile("*.*")
If $Search = -1 Then
Exit
EndIf
While 1
$File = FileFindNextFile($Search)
If @error Then
ExitLoop
ElseIf $File = @ScriptName Then
$File = FileFindNextFile($Search)
EndIf
$ArchiveName = $File & '.7z'
$Archivate = $K & $ProgramFilesDir & $7z & $K & ' a -mx9 ' & $K & $ArchiveName & $K & ' ' & $K & $File & $K & $ArchOptions
Archivate($File)
WEnd
Func Archivate($File)
RunWait(@ComSpec & ' /c ' & $Archivate, "")
RunWait(@ComSpec & ' /c ' & $DEL & $K & $CurrentDir & $File & $K, "")
EndFunc
FileClose($Search)
На что я получаю сообщение:
читать дальше »
Код:
"C:\Program" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
D:\Program Files\AutoIt3\M\TMP>
Не совсем понимаю в чём проблема. Дописываю копирование в буфер комманды, которая отправляется скриптом в @ComSpec.
читать дальше »
Код:
Func Archivate($File)
ClipPut($Archivate)
RunWait(@ComSpec & ' /k ' & $Archivate, "")
RunWait(@ComSpec & ' /c ' & $DEL & $K & $CurrentDir & $File & $K, "")
EndFunc
Вот что в результате получаю в буфер:
читать дальше »
Код:
"C:\Program Files\7-Zip\7z.exe" a -mx9 "TESTкопия.au3.7z" "TESTкопия.au3" -mmt -ms=off
Открываю cmd, ctrl+v -> enter. Всё ок, работает...
читать дальше »
Код:
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
d:\Program Files\AutoIt3\M\TMP>"C:\Program Files\7-Zip\7z.exe" a -mx9 "TESTкопия.au3.7z" "TESTкопия.au3" -mmt -ms=off
7-Zip [64] 9.22 beta Copyright (c) 1999-2011 Igor Pavlov 2011-04-18
Scanning
Creating archive TESTкопия.au3.7z
Compressing TESTкопия.au3
Everything is Ok
d:\Program Files\AutoIt3\M\TMP>
Прошу помощи...
UPD: Решение тут:
http://forum.oszone.net/showthread.p...08#post2024040