為什麼這篇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
謝謝 加進去了
-------
<補充>更簡單的方法
- 安裝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)