Файлы извлечения из zip-файла с VBScript

У вас есть пара проблем с вашим кодом:

  1. В вашем операторе SQL SELECT вы ищете значения в текстовых столбцах (TEXT, VARCHAR и т. Д.). Для этого необходимо добавить одинарные кавычки в критерии поиска, так как вы хотите указать текстовый литерал. Поэтому WHERE title={} должно быть WHERE title='{}' (то же самое относится и к другим параметрам).
  2. Если один или несколько ваших аргументов пусты, вы будете искать строки, в которых соответствующее значение является пустым текстом. Таким образом, в вашем примере search(title='test2') запустит поиск записи, где столбец title имеет значение 'test2' или любой из трех других столбцов (author, year и isbn) имеет пустой текст , Если вы решили искать заголовок 'test2', это будет работать только в том случае, если ни один из других столбцов не будет когда-либо содержать пустой текст. И даже в этом случае из-за трех OR операторов в вашем запросе производительность будет низкой. Вместо этого вам следует оценить каждый параметр индивидуально и построить запрос только с непустыми параметрами.
  3. Создавая запрос с форматированием строки, вы создадите серьезную проблему безопасности в случае, если значения ваших параметров поиска поступают из пользовательского ввода. Ваш код широко открыт для внедрения SQL-кода, который является одной из самых простых и эффективных атак в вашей системе. Вы должны всегда параметризировать свои запросы , чтобы предотвратить эту атаку. По общему принципу никогда не создают запросы SQL, формируя или объединяя строки с их параметрами. Обратите внимание, что с параметризованными запросами вам не нужно добавлять к вашему запросу одинарные кавычки, как написано в пункте 1.

10
задан Peter Mortensen 23 February 2010 в 09:53
поделиться

3 ответа

Можно использовать DotNetZip от VBScript.

Для распаковки существующего zipfile, перезаписывая любые файлы, которые могут существовать:

WScript.echo("Instantiating a ZipFile object...")
Dim zip 
Set zip = CreateObject("Ionic.Zip.ZipFile")

WScript.echo("Initialize (Read)...")
zip.Initialize("C:\Temp\ZipFile-created-from-VBScript.zip")

WScript.echo("setting the password for extraction...")
zip.Password = "This is the Password."

' set the default action for extracting an existing file
' 0 = throw exception
' 1 = overwrite silently
' 2 = don't overwrite (silently)
' 3 = invoke the ExtractProgress event
zip.ExtractExistingFile = 1

WScript.echo("extracting all files...")
Call zip.ExtractAll("extract")

WScript.echo("Disposing...")
zip.Dispose()

WScript.echo("Done.")

Создать новый zipfile:

dim filename 
filename = "C:\temp\ZipFile-created-from-VBScript.zip"

WScript.echo("Instantiating a ZipFile object...")
dim zip2 
set zip2 = CreateObject("Ionic.Zip.ZipFile")

WScript.echo("using AES256 encryption...")
zip2.Encryption = 3

WScript.echo("setting the password...")
zip2.Password = "This is the Password."

WScript.echo("adding a selection of files...")
zip2.AddSelectedFiles("*.js")
zip2.AddSelectedFiles("*.vbs")

WScript.echo("setting the save name...")
zip2.Name = filename

WScript.echo("Saving...")
zip2.Save()

WScript.echo("Disposing...")
zip2.Dispose()

WScript.echo("Done.")
4
ответ дан 3 December 2019 в 20:07
поделиться

http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_23022290.html

Проверьте свой временный каталог. Если у Вас есть 99 папок, связанных с этим процессом разархивации, попытайтесь удалить их.

2
ответ дан 3 December 2019 в 20:07
поделиться

Я добавил следующий код к началу моего разархивировать процедуру для удаления этих каталогов, прежде чем я разархивирую:

For i = 1 To 99
  If aqFileSystem.Exists(GetAppPath("Local Settings", "") & "\Temp\Temporary Directory " & i & " for DialogState.zip") = True Then
      result = aqFileSystem.ChangeAttributes(GetAppPath("Local Settings", "") & "\Temp\Temporary Directory " & i & " for DialogState.zip", 1 OR 2, aqFileSystem.fattrFree) 
      Call DelFolder(GetAppPath("Local Settings", "") & "\Temp\Temporary Directory " & i & " for DialogState.zip")  
   Else
      Exit For
   End If
Next
2
ответ дан 3 December 2019 в 20:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: