서버 측에서 winzip 명령 줄을 호출하여 여러 업로드 된 파일을 포장하고 압축하는 방법은 무엇입니까?
이 문제를 해결하려면 먼저 WSH라고하는 Windows 스크립팅 호스트를 이해해야합니다! 다음은 Microsoft의 설명의 인용문입니다.
***************************************************************************************** 누군가 ******* *************************
* WSH는 Microsoft의 스크립팅 기술 시리즈 유형으로 스크립팅 환경을 제공합니다.
*이 환경에서는 일부 객체가 사전 정의되고 COM의 다른 객체도 사용할 수 있습니다. *
* 스크립트 엔진을 사용하여 스크립트를 해석하고 실행합니다.
* 제 3자는 자체 스크립팅 엔진을 개발할 수도 있습니다. *
***************************************************************************************** 누군가 ******* *************************
구체적으로 말하면 먼저 일부 스크립트 파일을 컴파일합니다 (Microsoft에는 접미사 .vbs 또는 .js가 포함 된 몇 가지 예제가 포함되어 있습니다).
그런 다음 프로그램을 사용하여 설명하고 실행하면이 프로그램을 Windows 스크립팅 호스트라고합니다.
이름은 wscript.exe (또는 명령 줄의 cscript.exe)입니다. 컴퓨터를 확인할 수 있습니다.
이 두 파일이 있으면 WSH가 있는지 알 수 있습니다. (Win2000은 Winnt/System32/)
파일이 명령 줄이 아니라 스크립트 언어로 작성된 스크립트라는 점을 제외하고는 배치 파일과 매우 유사합니다.
WSH와 함께 제공되는 몇 가지 내장 개체를 간략하게 소개하겠습니다.
1. wscript.exe가 제공하는 객체
wscript는 스크립팅 엔진에 wscript로 노출됩니다.
wscript. 입력하다
2. wshom.ocx가 제공 한 객체.
wshshell 자동 객체. progid는 wscript.wshshell입니다.
(참고 : 이것은 우리가 사용하고 싶은 것입니다. DOS 명령을 실행할 수 있습니다).
WSHNetwork 자동 객체. progid는 wscript.wshnetwork입니다.
WSHSHORTCUT는 WSHSHELL.CREATESHORTCUT 방법을 통해 공개되지 않습니다.
WSHURLSHORTCUT는 WSHSHELL.CREATESHORTCUT 방법을 통해 공개되지 않습니다.
WSHCollection은 WSHNETWORK.ENUMNETWORKDRIVES 또는 WSHNETWORK.ENUMPRINTERCONNECTION을 통해 액세스하지 않습니다.
Wshenvironment는 공개되지 않습니다.
WSHSpecialFolders는 WSHSHELL.Folder 속성을 통해 공개되지 않습니다.
주로 환경 변수 획득, 네트워크 로그인, 드라이브 매핑 및 빠른 절편 생성을 완료 할 수 있습니다.
프로그램로드, 특수 폴더 (예 : 시스템 폴더) 정보 수집 및 기타 기능.
시스템에서 ADO 및 기타 COM 구성 요소를 지원하는 경우 사용할 수도 있습니다.
다음 예제는 텍스트 파일을보고 텍스트 파일을 작성하고
필기 보드에 복사 한 다음 .vbs로 접미사로 저장 한 다음 두 번 클릭 할 수 있습니다.
'test.vbs
'************************
'다음은 쉘 객체로 프로그램을 시작하는 것입니다.
'************************
set wshshell = wscript.createobject (wscript.shell)
wshshell.run (Notepad & wscript.scriptfullname)
'******************************************* ***********
'COM Object Scripting.FilesyStemObject를 사용하여 텍스트 파일을 작동하십시오
'******************************************* ***********
set fs = wscript.createobject (scripting.filesystemobject)
a = fs.creatextFile (c : /testfile.txt, true를 설정하십시오.
A.WRITELINE (이것은 테스트입니다.)
A. 클로즈
ASP와 같은 웹 프로그래밍 언어로도 적용 할 수 있습니다.
<script language = vbscript.encode runat = server>
'위는 쉘 객체로 프로그램을 시작합니다
set wshshell = server.createobject (wscript.shell)
issuccess = wshshell.run (d : /winnt/system32/cmd.exe, 1, true)
issuccess = 0이면
Response.write 명령이 성공적으로 실행되었습니다!
또 다른
Response.write 명령이 실행되지 않았습니다! 권한이 부족하거나 프로그램이 DOS 상태에서 실행할 수 없습니다.
끝 If
</script>
메모:
1. runat = 서버에는 있어야합니다
2. wshshell = wscript.createobject (wscript.shell)를 설정합니다.
wshshell = server.createobject (wscript.shell)를 설정하도록 변경하려면
3. 매개 변수 1은 SW_SHOWNARMAL을 나타내고 창을 활성화하고 표시합니다. 창이 최소화되거나 최대화되면 원래 크기와 위치로 복원됩니다.
4.true는 실행을 반환하는 오류를 나타내고, 거짓 또는 스크립트가 프로세스가 종료되기를 기다리지 않고도 계속 실행되도록 지정됩니다.
5. WSH의 내장 객체를 호출하면 호출 함수 및 절차처럼 호출 할 수 있습니다.
예를 들어, wshshell.run (d : /winnt/system32/cmd.exe, 1, true)을 호출하십시오.
WSH에 관심이 있고 더 알고 싶다면 확인하십시오.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsconwshbasics.asp
http://www.dev-club.com/club/bbs/showessence.asp?id=11136
이제 요점으로 돌아가서 파일을 압축하고 압축하는 방법을 살펴 보겠습니다!
Winzip이 파일을 압축하고 압축하기 쉽지만 프로그램 및 명령 줄을 통해이를 호출하는 방법은 누구나 알고 있습니까?
물론 Winzip의 저자가 개발했습니다
WinZip 명령 줄 지원 애드온 버전 1.0
누구나 http://www.winzip.com/wzcline.htm으로 이동하여 wzcline.exe를 다운로드 할 수 있습니다!
전제는 Winzip8.0이 아닌 경우 기계가 Winzip8.0 이상을 설치해야합니다
http://www.winzip.com/download.htm 다운로드!
다운로드 후 설치하십시오!
Winzip 명령 줄 도움말 파일 및 프로그램 wzzip.exe, wzunzip.exe는 winzip 디렉토리에서 생성됩니다.
통화 실행을 시작할 수 있습니다.
예를 들어 : C :/Program Files/WinZip/Wzzip MyFile.zip
여기에 두 개의 파일을 모든 디렉토리에 복사하여 DOS 창에서 직접 실행할 수도 있습니다.
예를 들면 : wzzip.exe myfile.zip
세트 경로 = c :/windows; c :/program files/winzip을 추가 할 수 있습니다.
패스를 추가하지 않고 어디서나 호출 할 수 있습니다!
이제 도움의 두 명령의 기본 사용법을 간략하게 이해해 봅시다.
wzzip.exe를 사용하여 파일을 압축하십시오.
일반 형식 : wzzip [옵션] zipfile [@listfile] [파일 ...]
[옵션] 포함 :
-기본 작업, 압축 파일
-a+ 파일을 압축하고 압축 할 파일을 삭제합니다.
-B [Drive | Path]는 다른 드라이브에서 임시 압축 파일을 작성하는 것입니다.
-D ZIP 파일에 지정된 대상 파일 삭제
-e <x | n | f | s | 0> 압축 비율을 설정하는 것입니다. x는 최대 값이고 0은 최소값입니다.
-f zip 파일에 존재하는 파일 교체
-h |-? 도와 봅니다
-v 압축 파일 목록을 만듭니다
-@list 감압 할 모든 파일이 포함 된 파일을 생성 한 다음 포함 된 파일 이름으로 압축합니다.
............. (다른 세부 사항은 도움말 파일을 참조하십시오)
[@listfile]은 압축 파일의 목록 정보 레코드입니다
[파일 ...] 여러 파일이 압축되어 공간 또는 와일드 카드로 분리됩니다.
예:
현재 디렉토리의 모든 파일을 압축하십시오
wzzip test.zip *. *
txt 유형의 모든 파일을 압축하십시오
wzzip test.zip *.txt
두 파일을 압축하십시오
wzzip test.zip abc.txt def.txt
ABC.txt를 제외한 TXT 유형의 모든 파일을 압축하십시오
wzzip -xabc.txt test.zip *.txt
d :/docs에서 txt 유형의 모든 파일과 하위 디렉토리 압축
wzzip -rp test.zip d :/docs/*. txt
Zipit.1st to test.zip에서 파일을 업데이트하십시오
wzzip -u test.zip @zipit.lst
압축 파일 목록을 나열하십시오
wzzip -v test.zip
wzunzip.exe를 사용하여 파일을 압축 해제하십시오.
형식 별 : wzunzip [옵션] zipfile [@listfile] [path] [파일 ...]
[옵션] 포함 :
-C [M] 감압은 DOS 화면에 파일 목록을 표시하는 것입니다.
-D ZIP 파일의 디렉토리 구조를 재구성합니다
-f zip 파일의 현재 폴더와 동일한 이름으로 파일을 압축 해제하십시오.
-jhrs는 zip 파일에 파일의 숨겨진, 읽기 전용 및 시스템 속성을 무시합니다.
-jhrs는 숨겨진, 읽기 전용 및 시스템 속성으로 파일을 압축합니다.
-n 새 파일 만 압축 해제하고 감압 할 파일이 기존 파일보다 새 파일이 새 파일보다 새 파일을 교체하십시오.
-O 파일 교체 여부를 결정하기 위해 예를 사용할 필요가 없습니다.
-v 압축 파일 목록을 만듭니다
-@list 감압 할 모든 파일이 포함 된 파일을 생성 한 다음 포함 된 파일 이름으로 압축 해제
............. (다른 세부 사항은 도움말 파일을 참조하십시오)
예를 들어:
모든 파일을 현재 디렉토리로 만듭니다
wzunzip test.zip
test.zip에서 현재 디렉토리로 ABC.txt를 만듭니다
wzunzip test.zip abc.txt
test.zip에서 디렉토리 구조 및 파일을 현재 디렉토리로 만들기
wzunzip -d test.zip
test.zip to c :/docs에서 디렉토리 구조 및 파일 생성
wzunzip -d test.zip c :/docs files.ist에서 파일 이름이 포함 된 파일을 작성하십시오.
wzunzip test.zip @files.lst
test.zip의 파일 목록의 내용을 표시하십시오
wzunzip -v test.zip
압축 파일에 모든 파일 유형의 내용을 표시합니다.
wzunzip -v test.zip *.txt
위의 준비를 통해 파일 감압 및 압축을 수행하기 위해 VBS를 작성하는 것이 쉽습니다.
'test.vbs
'************************
'위는 쉘 객체로 프로그램을 시작합니다
'************************
set wshshell = wscript.createobject (wscript.shell)
wshshell.run (c :/wzzip.exe c : /test.zip c : /a.txt c : /b.txt)
'test.asp
'************************
'위는 쉘 객체로 프로그램을 시작합니다
'************************
<script language = vbscript.encode runat = server>
'위는 쉘 객체로 프로그램을 시작합니다
set wshshell = server.createobject (wscript.shell)
issuccess = wshshell.run (c : /wzzip.exe c : /test.zip c : /a.txt c : /b.txt, 1, true)
issuccess = 0이면
Response.write 명령이 성공적으로 실행되었습니다!
또 다른
Response.write 명령이 실행되지 않았습니다! 권한이 부족하거나 프로그램이 DOS 상태에서 실행할 수 없습니다.
끝 If
</script>
매우 간단합니다. 파일 업로드를 이와 결합하면 사용될 많은 기능을 생성합니다. 좋다:
업로드 구성 요소를 사용하여 여러 파일을 업로드 한 후 ZIP 파일 다운로드를 위해 다른 파일을 다른 파일에 제공 할 수 있습니다.
또는 zip 파일을 업로드 한 후 프로그램을 사용하여 압축을 제거하여 단일 파일 다운로드를 위해 다른 사람에게 제공 할 수 있습니다.
사용자에게 매우 편리합니다! 나는이 두 가지 변화를 향후 기사에 기록 할 것입니다! 기사에 필연적으로 누락이 있습니다. 제발 제발 제발!
위의 모든 예는 Win2000+IIS5.0에서 테스트되었습니다!