第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在不使用任何外部工具的情況下用批處理文件壓縮(/zip)和解壓縮(/解壓縮)文件和文件夾?

如何在不使用任何外部工具的情況下用批處理文件壓縮(/zip)和解壓縮(/解壓縮)文件和文件夾?

牛魔王的故事 2019-06-19 16:27:38
如何在不使用任何外部工具的情況下用批處理文件壓縮(/zip)和解壓縮(/解壓縮)文件和文件夾?我知道這里問了很多類似的問題,但我對(duì)答案并不完全滿意(甚至對(duì)問題也不滿意)。其主要目標(biāo)是兼容性-它應(yīng)該適用于盡可能廣泛的Windows機(jī)器(包括XP、Vista、Win 2003),這些機(jī)器仍然擁有大約20%的Windows份額,生成的文件應(yīng)該可以在Unix/Mac機(jī)器上使用(因此最好采用標(biāo)準(zhǔn)存檔/壓縮格式)。備選方案是:創(chuàng)建一個(gè)實(shí)現(xiàn)某些zip算法的批處理。很明顯,這是可能的-但只對(duì)單個(gè)文件使用CERTUTIL進(jìn)行二進(jìn)制處理(一些機(jī)器默認(rèn)沒有CERTUTIL,并且無法在WinXP家庭版上安裝)使用殼類應(yīng)用通過WSH。我認(rèn)為這是最好的選擇。它允許壓縮整個(gè)目錄,并且可以在每臺(tái)windows機(jī)器上使用。馬凱卡盡管壓縮不是那么便攜,但它在每臺(tái)Windows機(jī)器上都是可用的。像7zip這樣的外部程序能夠提取.cab內(nèi)容,但是當(dāng)文件需要在Unix/Mac上使用時(shí),它就不那么方便了。雖然壓縮單個(gè)文件非常簡單,但是保持目錄結(jié)構(gòu)需要付出更多的努力。使用.NET框架-不是很好的選擇。GZipStream但它只允許對(duì)單個(gè)文件進(jìn)行壓縮。.NET 4.5具有Zip功能,但它在Vista和XP上不受支持。更重要的是,在XP和Win 2003上沒有默認(rèn)安裝.NET,但由于.NET 2.0升級(jí)到4.0的可能性很大,這是一個(gè)相當(dāng)大的問題。Powershell-由于它依賴于.NET,它具有相同的能力,在XP、2003和Vista上默認(rèn)情況下沒有安裝,所以我將跳過它。
查看完整描述

3 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

makecab解決方案有一些問題,所以這里有一個(gè)固定版本,當(dāng)使用帶空格的目錄時(shí),它解決了這個(gè)問題。


;@echo off


;;;;; rem start of the batch part  ;;;;;

;

;for %%a in (/h /help -h -help) do ( 

;   if /I "%~1" equ "%%~a" if "%~2" equ "" (

;       echo compressing directory to cab file  

;       echo Usage:

;       echo(

;       echo %~nx0 "directory" "cabfile"

;       echo(

;       echo to uncompress use:

;       echo EXPAND cabfile -F:* .

;       echo(

;       echo Example:

;       echo(

;       echo %~nx0 "c:\directory\logs" "logs"

;       exit /b 0

;   )

; )

;

; if "%~2" EQU "" (

;   echo invalid arguments.For help use:

;   echo %~nx0 /h

;   exit /b 1

;)

;

; set "dir_to_cab=%~f1"

;

; set "path_to_dir=%~pn1"

; set "dir_name=%~n1" 

; set "drive_of_dir=%~d1"

; set "cab_file=%~2"

; if not exist "%dir_to_cab%\" (

;   echo no valid directory passed

;   exit /b 1

;)


;

;break>"%tmp%\makecab.dir.ddf"

;

;setlocal enableDelayedExpansion

;for /d /r "%dir_to_cab%" %%a in (*) do (

;   

;   set "_dir=%%~pna"

;   set "destdir=%dir_name%!_dir:%path_to_dir%=!"

;   (echo(.Set DestinationDir=!destdir!>>"%tmp%\makecab.dir.ddf")

;   for %%# in ("%%a\*") do (

;       (echo("%%~f#"  /inf=no>>"%tmp%\makecab.dir.ddf")

;   )

;)

;(echo(.Set DestinationDir=!dir_name!>>"%tmp%\makecab.dir.ddf")

;   for %%# in ("%~f1\*") do (

;       

;       (echo("%%~f#"  /inf=no>>"%tmp%\makecab.dir.ddf")

;   )


;makecab /F "%~f0" /f "%tmp%\makecab.dir.ddf" /d DiskDirectory1="%cd%" /d CabinetNameTemplate=%cab_file%.cab

;rem del /q /f "%tmp%\makecab.dir.ddf"

;exit /b %errorlevel%


;;

;;;; rem end of the batch part ;;;;;


;;;; directives part ;;;;;

;;

.New Cabinet

.set GenerateInf=OFF

.Set Cabinet=ON

.Set Compress=ON

.Set UniqueFiles=ON

.Set MaxDiskSize=1215751680;


.set RptFileName=nul

.set InfFileName=nul


.set MaxErrors=1

;;

;;;; end of directives part ;;;;;


查看完整回答
反對(duì) 回復(fù) 2019-06-19
?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

CAB.bat[INPUT]文件夾或文件:PACKIN.CAB或.?_:解壓縮\None:Pack afiles子文件夾

還將添加CAB右鍵單擊“發(fā)送到”菜單以便于處理。

由于這兩個(gè)任務(wù)都是無縫完成的,所以它應(yīng)該比丑陋的makecabOne更好-如果您編寫臨時(shí)文件,為什么要使用混合腳本呢?


@echo off &echo. &set "ext=%~x1" &title CAB [%1] &rem input file or folder / 'files' folder / unpacks .cab .??_

if "_%1"=="_" if not exist "%~dp0files" echo CAB: No input and no 'files' directory to pack &goto :Exit "do nothing"

if "_%1"=="_" if exist "%~dp0files" call :CabDir "%~dp0files" &goto :Exit "input = none, use 'files' directory -pack" 

for /f "tokens=1 delims=r-" %%I in ("%~a1") do if "_%%I"=="_d" call :CabDir "%~f1" &goto :Exit "input = dir -pack"

if not "_%~x1"=="_.cab" if not "_%ext:~-1%"=="__" call :CabFile "%~f1" &goto :Exit "input = file -pack"

call :CabExtract "%~f1" &goto :Exit "input = .cab or .??_ -unpack" 

:Exit AveYo: script will add a CAB entry to right-click -- SendTo menu

if not exist "%APPDATA%\Microsoft\Windows\SendTo\CAB.bat" copy /y "%~f0" "%APPDATA%\Microsoft\Windows\SendTo\CAB.bat" >nul 2>nul

ping -n 6 localhost >nul &title cmd.exe &exit /b

:CabExtract %1:[.cab or .xx_]

echo %1 &pushd "%~dp1" &mkdir "%~n1" >nul 2>nul &expand -R "%~1" -F:* "%~n1" &popd &goto :eof

:CabFile %1:[filename]

echo %1 &pushd "%~dp1" &makecab /D CompressionType=LZX /D CompressionLevel=7 /D CompressionMemory=21 "%~nx1" "%~n1.cab" &goto :eof   

:CabDir %1:[directory]

dir /a:-D/b/s "%~1"

set "ddf="%temp%\ddf""

echo/.New Cabinet>%ddf%

echo/.set Cabinet=ON>>%ddf%

echo/.set CabinetFileCountThreshold=0;>>%ddf%

echo/.set Compress=ON>>%ddf%

echo/.set CompressionType=LZX>>%ddf%

echo/.set CompressionLevel=7;>>%ddf%

echo/.set CompressionMemory=21;>>%ddf%

echo/.set FolderFileCountThreshold=0;>>%ddf%

echo/.set FolderSizeThreshold=0;>>%ddf%

echo/.set GenerateInf=OFF>>%ddf%

echo/.set InfFileName=nul>>%ddf%

echo/.set MaxCabinetSize=0;>>%ddf%

echo/.set MaxDiskFileCount=0;>>%ddf%

echo/.set MaxDiskSize=0;>>%ddf%

echo/.set MaxErrors=1;>>%ddf%

echo/.set RptFileName=nul>>%ddf%

echo/.set UniqueFiles=ON>>%ddf%

setlocal enabledelayedexpansion

pushd "%~dp1"

for /f "tokens=* delims=" %%D in ('dir /a:-D/b/s "%~1"') do (

 set "DestinationDir=%%~dpD" &set "DestinationDir=!DestinationDir:%~1=!" &set "DestinationDir=!DestinationDir:~0,-1!"

 echo/.Set DestinationDir=!DestinationDir!;>>%ddf%

 echo/"%%~fD"  /inf=no;>>%ddf%

)

makecab /F %ddf% /D DiskDirectory1="" /D CabinetNameTemplate=%~nx1.cab &endlocal &popd &del /q /f %ddf% &goto :eof


查看完整回答
反對(duì) 回復(fù) 2019-06-19
  • 3 回答
  • 0 關(guān)注
  • 1484 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)