[批处理大放送] Visual Studio 之 VC++ 工程清理和备份
兩個文件:ProjectClean v1.0.bat和ProjectBackup v1.3.bat
1.工程清理
VC++工程清理就是刪除各種工程管理臨時文件、編譯出的臨時文件,如.obj文件。
ProjectClean v1.0.bat會刪除當前目錄和所有子目錄里面所有應該刪除的臨時文件。保留Debug和Release里面的所有.exe等非臨時文件,這樣可以減少這個工程的磁盤空間占用,或者可以有利于代碼移動、保存等。
?
.res文件該不該刪除必須提一下,它對VC#工程是有用的,但是對VC#工程似乎是沒有用的。
?
當時VC++和VC#工程都放在一起,然后在他們的父目錄上面運行,結果VC#工程的.res文件被刪除,從而VC#工程資源文件出錯誤。
?
?
假設E:/Prj_VC專門放VC++工程的,只要運行在E:/Prj_VC里面運行PProjectClean v1.0.bat,秒秒鐘清理干干凈凈,干凈的意思是沒有不該有的臨時文件。
?
?
ProjectClean v1.0.bat文內容如下:
:: [Purpose] :: Clean the MS VC++ 6/7/8/9/10 Project's temp file ... :: [Author] :: intret :: [Date] :: 2011.04.08 YMD :: [Version] :: V1.0 :: [Revision] :: 1. :: [Todo] :: .usr is hidden file @echo off color 2f title VC++ Project Clean run at %DATE%_%TIME% ::mode con:cols=70 lines=30set fExts=ncb.opt.obj.ilk.pdb.plg.aps.bsc.tmp.trc.pch.idb.exp.sbr set fExts10=.sdf.usr.*log.suo.ipchset fileExts=%fExts%%fExts10% echo [1] Cleanning files. :loop FOR /F "usebackq delims=. tokens=1,*" %%i IN (`echo %fileExts%`) DO ( if not "%%j"=="" (del /S *.%%i&set fileExts=%%j&goto loop) else del /S *.%%i&goto endloop ) :endloopcolor 4f echo [2] Command complected.:Exit pause>nul
2.工程備份
功能:壓縮文件夾并智能命名目標文件。(可以先調用ProjectClean v1.0.bat清理VC++工程,然后給工程文件夾壓縮,做備份)
原理:調用WinRAR/HaoZip/7Zip壓縮軟件把整個文件夾都壓縮到一個文件,并按照一定的格式進行命名,特色就是自動命名方便,無它。
命名格式:
<文件夾名稱> + [<點分的日期格式> +下劃線+ <點分的時間格式> ] + 點 +<后綴>
?
例如:
DemoAppProject [2011.1.1_10.59.1.23].zip
當然,時間中,秒的后面還有一個精確的數字,不知道是什么,看起來像毫秒又不是3位數的。如果你不喜歡這個命名格式,可以修改如下語句:
set fName=%parentFolder% [%fDate%_%fTime%]
成為:
set fName=%parentFolder%__%fDate%__%fTime%
當然,你懂的。
如果你喜歡,可以學習之,然后修改之,傳播之,有什么好的建議,告之。
ProjectBakup v1.3.bat 文件內容如下。
:: [Purpose] :: 使用該批處理文件來壓縮文件夾,以達到備份源碼工程的目的。 :: (可以把批處理放在工程或者解決方案目錄里面) :: [Author] :: intret :: [Date] :: 2011.04.07 YMD :: [Version] :: V1.3 :: [Revision] :: 1.[2011.04.08 YMD] 檢查批處理文件是否在分區根目錄中運行. :: 2.[2011.04.14 YMD] 支持 HaoZip和7Zip. :: 3.[2011.04.19 YMD] 支持壓縮文件中僅包含一個文件夾。 ::@echo off title Compress folder at %DATE%_%TIME% ::mode con:cols=70 lines=30if "%~p0"=="/" (color 4f&echo [Error] This bat file can't run at a drive's root folder!&goto Exit):: :: Detecting compression application :: set zipAppWinRAR=%ProgramFiles%/WinRAR/Rar.exe set zipAppHaoZip=%ProgramFiles%/HaoZip/HaoZipC.exe set zipApp7Zip=%ProgramFiles%/7-Zip/7z.exe color 3f echo [1] Compression application detecting... if not exist "%zipAppWinRAR%" (set zipAppWinRAR=) else (echo WinRAR detected.) if not exist "%zipAppHaoZip%" (set zipAppHaoZip=) else (echo HaoZip detected.) if not exist "%zipApp7Zip%" (set zipApp7Zip=) else (echo 7-Zip detected.):: :: Format date and time :: set fDate= set fTime=FOR /F "usebackq delims= " %%i IN (`echo %DATE%`) DO ( FOR /F "usebackq delims=- tokens=1,2,3" %%I IN (`echo %%i`) DO ( set fDate=%%I.%%J.%%K ) )FOR /F "usebackq delims= " %%i IN (`echo %TIME%`) DO ( FOR /F "usebackq delims=: tokens=1,2,3" %%I IN (`echo %%i`) DO ( set fTime=%%I.%%J.%%K ) ):: :: Get parent folder name :: set parentPath=%~p0 set parentFolder= :split FOR /F "usebackq delims=/ tokens=1,*" %%i IN (`echo %parentPath%`) DO ( if "%%j"=="" (set parentFolder=%%i&goto endsplt) else set parentPath=%%j&goto split ) :endspltset fName=%parentFolder% [%fDate%_%fTime%] set fPath= set fExt= pushd %cd% cd .. set fPath=%cd%/%fName% popd:: :: Compressing file. :: color 3f echo [2] Compressing file... ::if not "%zipAppWinRAR%"=="" set fExt=rar&goto WinRAR ::if not "%zipAppHaoZip%"=="" set fExt=zip&goto HaoZip if not "%zipApp7Zip%"=="" set fExt=zip&goto 7Zip :WinRAR cd.. set cmdline="%zipAppWinRAR%" A "%fName%.%fExt%" "%parentFolder%" ::echo 執行命令:%cmdline% %cmdline% if "%ERRORLEVEL%"=="0" echo 成功操作。&goto END if "%ERRORLEVEL%"=="1" echo 警告。發生非致命錯誤。 if "%ERRORLEVEL%"=="2" echo 發生致命錯誤。 if "%ERRORLEVEL%"=="5" echo 寫錯誤。 if "%ERRORLEVEL%"=="7" echo 錯誤命令行選項。 if "%ERRORLEVEL%"=="8" echo 內存不足。 if "%ERRORLEVEL%"=="9" echo 文件創建錯誤。 goto END:HaoZip cd.. "%zipAppHaoZip%" a -tzip "%fPath%.%fExt%" "%parentFolder%" -r goto END:7Zip cd .. "%zipApp7Zip%" a -tzip "%fPath%.%fExt%" "%parentFolder%" -r if "%ERRORLEVEL%"=="0" echo No error。 if "%ERRORLEVEL%"=="1" echo Warning:one or more files were locked by some other application, so they were not compressed. if "%ERRORLEVEL%"=="2" echo Fatal error。 if "%ERRORLEVEL%"=="8" echo Not enough memory for operation。 if "%ERRORLEVEL%"=="255" echo User stopped the process。 goto END:END color 2f echo [3] Command complected. if exist "%fName%.%fExt%" echo %fPath%.%fExt% 成功創建。 :Exit echo. pause
?
3.為什么不把兩個文件寫一起?功能獨立唄。
總結
以上是生活随笔為你收集整理的[批处理大放送] Visual Studio 之 VC++ 工程清理和备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php正态分布,如何在PHP中生成累积正
- 下一篇: C++国王的魔镜