[爆卦]windows tar指令是什麼?優點缺點精華區懶人包

為什麼這篇windows tar指令鄉民發文收入到精華區:因為在windows tar指令這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Holocaust123 (要把自己逼緊一點)看板EZsoft標題[教學] 一鍵解壓縮.tar....


一般用 7-Zip 解.tar.gz/.tar.bz2/.tbz/.tgz這些壓縮檔時要解兩次

第一次解會出現.tar檔(俗稱打包檔)

然後把.tar檔解壓後才會得到真正的檔案


WinRAR(版本要新一點)可以直接解出真正的檔案

但WinRAR不是freeware

有沒有freeware能做到WinRAR的這個功能呢??


有, Linux上的"tar"(指令)可以

Linux很多小工具有Windows版本

所以Windows也有"tar"可以用

但缺點是不方便:

必須先進入console mode(開始->執行->cmd)

然後切換到.tar.gz/.tar.bz2/.tbz/.tgz檔所在的資料夾下指令


下面要教的是

在右鍵選單中新增選項

以便一鍵從.tar.gz/.tab.bz2/.tbz/.tgz檔解壓出真正的檔案

而不需在console下指令


Step 1. (下載並安裝MSYS)

MSYS是GNU小工具(例如make, gawk, tar,...)在Windows的集合

有MSYS就可以在Windows中用tar了

官網: http://www.mingw.org/wiki/MSYS

載點在 "Installing MSYS" 一節

假設安裝路徑是 C:\msys\1.0

裝好後要把 C:\msys\1.0\bin 加到環境變數"Path"的值裏

Step 2. (在右鍵新增解壓.tar.gz/.tar.bz2/.tbz/.tgz檔的選項)

在 "C:\Documents and Settings\[使用者名稱]\SendTo\" 新增文字檔

取名"tar.bat" 內容如下:

@echo off
cd %~d1%~p1
mkdir %~n1
move %~n1%~x1 %~n1
cd %~n1

if(%~x1) == (.bz2) goto bz2
if(%~x1) == (.tbz) goto tbz
if(%~x1) == (.gz) goto gz
if(%~x1) == (.tgz) goto tgz

:bz2
"C:\msys\1.0\bin\tar.exe" jxf %~n1%~x1
goto end
:tbz
"C:\msys\1.0\bin\tar.exe" jxf %~n1%~x1
goto end
:gz
"C:\msys\1.0\bin\tar.exe" zxf %~n1%~x1
goto end
:tgz
"C:\msys\1.0\bin\tar.exe" zxf %~n1%~x1
goto end

:end
move %~n1%~x1 ..

這樣就完成了

以後只要在.tar.gz/.tar.bz2/.tbz/.tgz檔按右鍵

點"傳送到->tar.bat"

就可以一次解出真正的檔案了:

http://www.dumpt.com/img/viewer.php?file=uc065u12uokkj3f52w1j.jpg

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.106
AsDfJJJ:推用心分享 08/16 05:55
newversion:如果過程中要秀出正在解壓的檔案 zxf 可改成 zxvf 08/17 22:05
newversion:另外解壓 .tar.bz2 .tbz zxf 改成 jxf 08/17 22:07

謝謝 加進去了

yinjing:推分享 08/19 20:55

-------

<補充>更簡單的方法

- 安裝Cygwin-Lite跟bzip2

http://cygwin-lite.sourceforge.net/

http://gnuwin32.sourceforge.net/packages/bzip2.htm

Cygwin-Lite + bzip2 只要3MB左右的空間

不像 CygWin 或 MSYS+MinGW 要幾十幾百MB

- 把"C:\cygwin\bin"和"C:\Program Files\GnuWin32\bin"加到PATH

- 將下面內容寫入untar_unzip.bat

@echo off

echo ================================================================
echo [Fileext] = %~x1
echo [Parent path] = %~d1%~p1
echo [Filename w/ ext] = %~n1%~x1
echo [Filename w/o ext] = %~n1
echo ================================================================

REM cd to where the zipped file located
cd "%~d1%~p1"

REM unzip the file according to its extension
if not ["%~x1"]==[".bz2"] goto endbzip2
echo "fileext is .tar.bz2"
"bzip2" -d "%~n1%~x1"
"tar" -xf "%~n1"
"rm" "%~n1"
goto end
:endbzip2

if not ["%~x1"]==[".gz"] goto endgzip
echo "fileext is .tar.gz"
"gzip" -d "%~n1%~x1"
"tar" -xf "%~n1"
"rm" "%~n1"
goto end
:endgzip

if not ["%~x1"]==[".tgz"] goto endtgz
echo "fileext is .tgz"
"gzip" -d "%~n1%~x1"
"tar" -xf "%~n1.tar"
"rm" "%~n1.tar"
goto end
:endtgz

if not ["%~x1"]==[".tbz"] goto endtbz
echo "fileext is .tbz"
"bzip2" -d "%~n1%~x1"
"tar" -xf "%~n1.tar"
"rm" "%~n1.tar"
goto end
:endtbz

if not ["%~x1"]==[".tar"] goto tar
echo "fileext is .tar"
:tar
"tar" -xf "%~n1%~x1"
"rm" "%~n1%~x1"
goto end

:end
pause

- 將untar_unzip.bat放到"C:\Documents and Settings\[id]\SendTo"

※ 編輯: Holocaust123 來自: 140.112.30.32 (11/07 12:29)

你可能也想看看

搜尋相關網站