[批处理大放送] Visual Studio 之 VC++ 工程清理和备份
兩個(gè)文件:ProjectClean v1.0.bat和ProjectBackup v1.3.bat
1.工程清理
VC++工程清理就是刪除各種工程管理臨時(shí)文件、編譯出的臨時(shí)文件,如.obj文件。
ProjectClean v1.0.bat會(huì)刪除當(dāng)前目錄和所有子目錄里面所有應(yīng)該刪除的臨時(shí)文件。保留Debug和Release里面的所有.exe等非臨時(shí)文件,這樣可以減少這個(gè)工程的磁盤空間占用,或者可以有利于代碼移動(dòng)、保存等。
?
.res文件該不該刪除必須提一下,它對(duì)VC#工程是有用的,但是對(duì)VC#工程似乎是沒有用的。
?
當(dāng)時(shí)VC++和VC#工程都放在一起,然后在他們的父目錄上面運(yùn)行,結(jié)果VC#工程的.res文件被刪除,從而VC#工程資源文件出錯(cuò)誤。
?
?
假設(shè)E:/Prj_VC專門放VC++工程的,只要運(yùn)行在E:/Prj_VC里面運(yùn)行PProjectClean v1.0.bat,秒秒鐘清理干干凈凈,干凈的意思是沒有不該有的臨時(shí)文件。
?
?
ProjectClean v1.0.bat文內(nèi)容如下:
:: [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.工程備份
功能:壓縮文件夾并智能命名目標(biāo)文件。(可以先調(diào)用ProjectClean v1.0.bat清理VC++工程,然后給工程文件夾壓縮,做備份)
原理:調(diào)用WinRAR/HaoZip/7Zip壓縮軟件把整個(gè)文件夾都?jí)嚎s到一個(gè)文件,并按照一定的格式進(jìn)行命名,特色就是自動(dòng)命名方便,無它。
命名格式:
<文件夾名稱> + [<點(diǎn)分的日期格式> +下劃線+ <點(diǎn)分的時(shí)間格式> ] + 點(diǎn) +<后綴>
?
例如:
DemoAppProject [2011.1.1_10.59.1.23].zip
當(dāng)然,時(shí)間中,秒的后面還有一個(gè)精確的數(shù)字,不知道是什么,看起來像毫秒又不是3位數(shù)的。如果你不喜歡這個(gè)命名格式,可以修改如下語句:
set fName=%parentFolder% [%fDate%_%fTime%]
成為:
set fName=%parentFolder%__%fDate%__%fTime%
當(dāng)然,你懂的。
如果你喜歡,可以學(xué)習(xí)之,然后修改之,傳播之,有什么好的建議,告之。
ProjectBakup v1.3.bat 文件內(nèi)容如下。
:: [Purpose] :: 使用該批處理文件來壓縮文件夾,以達(dá)到備份源碼工程的目的。 :: (可以把批處理放在工程或者解決方案目錄里面) :: [Author] :: intret :: [Date] :: 2011.04.07 YMD :: [Version] :: V1.3 :: [Revision] :: 1.[2011.04.08 YMD] 檢查批處理文件是否在分區(qū)根目錄中運(yùn)行. :: 2.[2011.04.14 YMD] 支持 HaoZip和7Zip. :: 3.[2011.04.19 YMD] 支持壓縮文件中僅包含一個(gè)文件夾。 ::@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 執(zhí)行命令:%cmdline% %cmdline% if "%ERRORLEVEL%"=="0" echo 成功操作。&goto END if "%ERRORLEVEL%"=="1" echo 警告。發(fā)生非致命錯(cuò)誤。 if "%ERRORLEVEL%"=="2" echo 發(fā)生致命錯(cuò)誤。 if "%ERRORLEVEL%"=="5" echo 寫錯(cuò)誤。 if "%ERRORLEVEL%"=="7" echo 錯(cuò)誤命令行選項(xiàng)。 if "%ERRORLEVEL%"=="8" echo 內(nèi)存不足。 if "%ERRORLEVEL%"=="9" echo 文件創(chuàng)建錯(cuò)誤。 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% 成功創(chuàng)建。 :Exit echo. pause
?
3.為什么不把兩個(gè)文件寫一起?功能獨(dú)立唄。
總結(jié)
以上是生活随笔為你收集整理的[批处理大放送] Visual Studio 之 VC++ 工程清理和备份的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php正态分布,如何在PHP中生成累积正
- 下一篇: 使用docker部署awx-1.7.1.