今天有個比對特定檔案內容的需求,兩個不同的資料夾、相同的目錄結構與檔名,要比對的檔案分別放在不同的資料夾裡,例如:
- XML檔在 web\xml
- JS 檔在 web\js
- CSS檔在 web\css
使用WinMerge來比對,範例如下:
start "winmerge" "c:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" c:\proj1\web\xml\AA.xml c:\proj2\web\xml\AA.xml start "winmerge" "c:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" c:\proj1\web\js\BB.js c:\proj2\web\js\BB.js start "winmerge" "c:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" c:\proj1\web\css\CC.css c:\proj2\web\css\CC.css
為了節省輸入檔名的時間想建立批次檔來使用,只傳入要比對的檔名而能各自判斷檔案所在的資料夾,搜尋到的最簡單解法是用環境變數的字串操作來判斷(參考來源:Find out whether an environment variable contains a substring)。下列批次檔唯一的技巧是「~-4」字串操作,取環境變數最後4個子字串來比對,如果是".xml"則比對web\xml裡的檔案,以此類推:
▼ 比對用的批次檔,命令為cmpf.bat
rem FN存放傳入的第一個參數,即要比對的檔名 @echo off set FN=%1 if "%FN:~-4%"==".xml" goto XML if "%FN:~-4%"==".css" goto CSS if "%FN:~-3%"==".js" goto JS goto END :XML set DIR=xml goto WINMERGE :CSS set DIR=css goto WINMERGE :JS set DIR=js goto WINMERGE :WINMERGE set FN1=c:\proj1\%DIR%\%1 set FN2=c:\proj2\%DIR%\%1 rem echo TEST: %FN1% %FN2% start "winmerge" "C:\Program files (x86)\Winmerge\winmergeu.exe" /f "Exclude Source Control" %FN1% %FN2% :END
▼ 執行範例
cmpf AA.xml cmpf BB.js cmpf CC.css
##
您可能也會有興趣的類似文章
- 檔案比對軟體WinMerge的篩選器參數使用方法 (0則留言, 2013/05/10)
- 使用WinMerge以忽略$Header$與$Id$的檔案比對方法 (2則留言, 2006/09/09)
- [Cygwin] 用cygstart啟動文件檔案 (0則留言, 2007/01/21)
- 超簡單MSN下載檔案自動分類 (0則留言, 2010/02/27)
- 開始使用Cygwin以取代cmd.exe (2則留言, 2007/01/11)
- 使用Evernote命令行工具ENScript.exe快速搜尋記事標題 (0則留言, 2014/10/09)
- [Windows] 部署相同目錄結構檔案的簡便方法 (0則留言, 2005/03/15)
- IDEA的編輯web.xml的圖形介面 (0則留言, 2005/06/06)
- 萬用影音轉檔程式:FFMpeg與HD專用的VideoConverter (0則留言, 2009/05/10)
- AutoHotkey輸出中文的方法 (6則留言, 2008/03/01)
- 方便切換目錄的指令:PUSHD與POPD (0則留言, 2006/07/15)
- 使用Inno Setup包裝安裝程式的備忘 (0則留言, 2014/03/21)
- Microsoft My Phone:同步手機資料的網路服務 (0則留言, 2009/05/20)
- WinMerge檔案濾鏡的使用方法 (0則留言, 2006/09/10)
- 多分頁的命令列工具ConEmu,取代cmd.exe的利器 (5則留言, 2013/01/06)
The post 使用批次檔簡化比對檔案的檔名輸入 appeared first on 簡睿隨筆.