基本上,我有以下脚本从zip提取文件。问题是将文件放入目录时,会出现一个窗口(基于Windows的脚本宿主),并显示如何复制文件。我如何让批处理文件隐藏出现的窗口。我不希望批处理文件的用户看到它。
脚本:
setlocal
cd /d %~dp0 /y
Call :UnZipFile "C:\Nora\" "C:\Nora\NoraFiles.zip" /y
exit /b
:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs% echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%
答案 0 :(得分:0)
更新
此处为 蝙蝠 布局 :
中的代码
setlocal
cd /d %~dp0
Call :UnZipFile "C:\Nora\" "C:\Nora\NoraFiles.zip"
exit /b
:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs% echo/ Const FOF_SILENT = ^&H4
>>%vbs% echo/ Const FOF_NOCONFIRMATION = ^&H10
>>%vbs% echo/ Const FOF_NOERRORUI = ^&H400
>>%vbs% echo/ Dim cFlags
>>%vbs% echo/ cFlags = FOF_SILENT + FOF_NOCONFIRMATION + FOF_NOERRORUI
>>%vbs% echo/ Set fso = CreateObject^("Scripting.FileSystemObject"^)
>>%vbs% echo/ If NOT fso.FolderExists^(%1^) Then
>>%vbs% echo/ fso.CreateFolder^(%1^)
>>%vbs% echo/ End If
>>%vbs% echo/ set objShell = CreateObject^("Shell.Application"^)
>>%vbs% echo/ set FilesInZip=objShell.NameSpace^(%2^).items
>>%vbs% echo/ objShell.NameSpace^(%1^).CopyHere^(FilesInZip^), cFlags
>>%vbs% echo/ Set fso = Nothing
>>%vbs% echo/ Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%
那么,这可以帮助您吗?
使用:
Un_Zipper.cmd驱动器:\ target \文件夹 驱动器:\ path \ File.Zip >
::或::
Un_Zipper.cmd“驱动器:\ target \文件夹” “驱动器:\ path \ File.Zip”
D:\Test_zip>UnZipper.cmd c:\nora d:\test_zip\nora.zip
@echo off & setlocal enabledelayedexpansion & cd /d "%~dp0"
set vbs="%temp%\_.vbs" & type nul>"!vbs!"
for /f "tokens=1,*delims= " %%a in ('echo/%*')do set "_zip_dir=%%~a" & set "_zip_file=%%~dpnxb"
>"!vbs!"^
(
echo/ Const FOF_SILENT = ^&H4
echo/ Const FOF_NOCONFIRMATION = ^&H10
echo/ Const FOF_NOERRORUI = ^&H400
echo/ Dim cFlags
echo/ cFlags = FOF_SILENT + FOF_NOCONFIRMATION + FOF_NOERRORUI
echo/ set objShell = CreateObject^("Shell.Application"^)
echo/ Set fso = CreateObject^("Scripting.FileSystemObject"^)
echo/ If NOT fso.FolderExists^("!_zip_dir!\"^) Then fso.CreateFolder^("!_zip_dir!\"^)
echo/ set FilesInZip=objShell.NameSpace^("!_zip_file!"^).items
echo/ objShell.NameSpace^("!_zip_dir!\"^).CopyHere^(FilesInZip^), cFlags
) && goto :_Un_Zip_: || goto :_Error_:
:_Error_:
echo/ Well, something is really wrong^^!! & exit /b 1
:_Un_Zip_:
cscript //nologo "!vbs!" & del /f /q "!vbs!" & exit /b 0