bat搜集
1. 删除文件夹下指定名称的所有子文件夹
@echo off ::设置要保留的文件夹名,多个文件夹之间用英文逗号隔开,如果包含空格或英文逗号,英文&以及其它一些特殊字符的名字,请把该完整名字用英文双引号括起来 set deleteName=bin,obj ::设置文件夹处理目录 set DirPath=D: (for %%a in (%deleteName%) do echo %%~a)>"%tmp%\delete.List" for /f "delims=" %%a in ('dir /ad/b/s "%DirPath%"') do ( findstr /bei "%%~nxa" "%tmp%\delete.List" >nul 2>nul && rd /s /q "%%~a" || echo %%a跳过 ) pause
2. 删除指定日期前的文档
@echo off ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。 ::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。 ::本例需要Win2003/Vista/Win7系统自带的forfiles命令的支持 rem 指定待删除文件的存放路径 set SrcDir=E:\test rem 指定天数 set DaysAgo=7 forfiles /p %SrcDir% /m *.* /d -%DaysAgo% /c "cmd /c del /f /q /a @path"
3. 文件夹打包成rar文件
@echo off rem 指定rar程序目录 + 备份到哪里 + 要打包的文件夹 "C:\Program Files (x86)\WinRAR\WinRAR.exe" a -ag -ibck "E:\backto\pre.rar" "E:\backfrom"
4. 自动拷贝文件至网络文件件
@echo off rem 设置要备份的文件夹... set bakfrom=E:\test rem 设置备份文件存放文件夹... set bakto=E:\test\backTo rem 设置文件名前缀 set prefix=xxx rem 获取昨天 for /f "delims=" %%a in ( 'PowerShell "&{Get-Date (Get-Date).AddDays(-1) -uformat "%%Y_%%m_%%d"}"' ) do ( if not defined yestoday set yestoday=%%a ) set prefix=%prefix%%yestoday% echo 同步中。。。 for /f "delims=" %%i in ('dir /b "%bakfrom%\%prefix%*.*"') do ( dir /b "%bakto%" >nul |find /I "%%i" >nul || copy "%bakfrom%\%%i" "%bakto%\%%i" >nul ) echo 备份拷贝完毕!
5.拷贝文件夹下所有文件到另一个文件夹
xcopy D:\workproject\test2\1.0\*.* D:\workproject\test2\测试1.0\ /s /e
6.共享文件夹做异地备份。
思路:
1. 文件复制到临时文件夹中
2. rar打压缩包
3. 拷贝rar文件到备份服务器
4. 删除rar文件和临时文件夹
@echo off rem 设置要备份的文件夹... set bakfrom=F:\22222\bak rem 设置备份文件存放文件夹... set bakto=F:\22222\OffsiteBackup rem 设置文件名前缀 set prefix=test_ rem 获取昨天 for /f "delims=" %%a in ( 'PowerShell "&{Get-Date (Get-Date).AddDays(-1) -uformat "%%Y_%%m_%%d"}"' ) do ( if not defined yestoday set yestoday=%%a ) set prefix=%prefix%%yestoday% rem 设置临时存放文件夹... set temp1=F:\22222\bak\temp\ set temp=%temp1%%yestoday% rem 设置rar的应用程序目录... set rarApp=C:\Program Files\WinRAR echo step1:拷贝至临时文件夹。。。 if exist %temp% rd /s /q %temp% md %temp% for /f "delims=" %%i in ('dir /b "%bakfrom%\%prefix%*.*"') do ( dir /b "%temp%" >nul |find /I "%%i" >nul || copy "%bakfrom%\%%i" "%temp%\%%i" >nul ) echo step1执行完毕! echo step2:rar打压缩包。。。 F: cd %temp1% rem 指定rar程序目录 + 备份到哪里 + 要打包的文件夹 "%rarApp%\WinRAR.exe" a -ag "%temp%\%yestoday%.rar" "%yestoday%" echo step2执行完毕! echo step3:拷贝rar文件到备份服务器。。。 for /f "delims=" %%i in ('dir /b "%temp%\%yestoday%*.rar"') do ( dir /b "%bakto%" >nul |find /I "%%i" >nul || copy "%temp%\%%i" "%bakto%\%%i" >nul ) echo step3执行完毕! echo step4:删除临时文件夹。。。 if exist %temp% rd /s /q %temp% echo step4执行完毕! pause