是否可以使用批处理隐藏Windows复制文件窗口?

时间:2019-03-19 18:39:41

标签: batch-file vbscript unzip

基本上,我有以下脚本从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%

1 个答案:

答案 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”

enter image description here 对不起,我的 limited 英语 。.

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