1.Add compressing function with 7-Zip

2.With tool win.rar code so you can change it if you want

 1 USE [master]
 2 GO
 3 /****** Object:  StoredProcedure [dbo].[sp_BackupDBBatch]    Script Date: 09/27/2013 22:25:40 ******/
 4 SET ANSI_NULLS ON
 5 GO
 6 SET QUOTED_IDENTIFIER ON
 7 GO
 8 /*-----------------------------
 9     Description:
10         1.Backup multiple Database
11         2.If you want to backup database except 'master\model\msdb\tempdb',you can input '%' of the second parameter
12         3.parameter 1 is the path where you want to back,parameter 2 is the database name you want to backup
13         3.This procedure backup database with fuzzy database name
14         
15         
16     Author:jiangxiaoqiang
17     Date:2013-09-27
18     Modify history:
19     2013-09-27    jiangxiaoqiang    add compressing function,the compressing tool 7-Zip.
20 -----------------------------*/
21 
22 
23 
24 
25 ALTER procedure [dbo].[sp_BackupDBBatch]
26     @backup_path varchar(200),
27     @backup_name varchar(200)
28 as
29 begin
30     declare @DynamicSQL varchar(256)
31     set @DynamicSQL='if not exist '+@backup_path+'\%Date:~0,4%%Date:~5,2%%Date:~8,2% mkdir '+@backup_path+'\%Date:~0,4%%Date:~5,2%%Date:~8,2%'
32     exec xp_cmdshell @DynamicSQL
33     
34     declare @backup_path_detail varchar(200)
35     set @backup_path_detail=@backup_path+'\'+CONVERT(char(8),GETDATE(),112)
36     --declare variable
37     DECLARE @dbname nvarchar(200)
38     --SET @backup_path='D:\DatabaseBackup'--you can define by yourself
39     /*
40      declare cursor syntax
41      DECLARE cursor_name CURSOR 
42      [LOCAL | GLOBAL] 
43      [FORWARD_ONLY | SCROLL] 
44      [STATIC | KEYSET | DYNAMIC | FAST_FORWARD] 
45      [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC] 
46      [TYPE_WARNING] 
47      FOR select_statement 
48      [FOR UPDATE [OF column_name [,...n]]] 
49     */
50     DECLARE db_info CURSOR --declare cursor
51     LOCAL
52     STATIC
53     READ_ONLY
54     FORWARD_ONLY
55     FOR --add other condition by select
56     SELECT name
57     FROM master.sys.databases with(NOLOCK)
58     WHERE database_id>4 and name like '%'+@backup_name+'%'--maser,model,msdb,tempdb
59      --here you can add the condition like:name like'NJPEC%'
60     OPEN db_info --open cursor
61     FETCH NEXT FROM db_info INTO @dbname
62    
63     WHILE @@FETCH_STATUS=0
64     BEGIN
65      EXEC master.dbo.backupDB @dbname,@backup_path_detail
66      FETCH NEXT FROM db_info INTO @dbname
67     END
68     CLOSE db_info
69     DEALLOCATE db_info
70 ---------------------------END of backup database--------------------------------
71    --Find&list all database
72    /*
73     select * 
74     from master.sys.databases
75     order by database_id;
76    */
77    
78    /*
79         This code to compress backup file to specify dictionary.
80         My tool is 7zip,and you can change the code with your
81         specifical compress tool.Read the help manual.    
82         
83         There is another tool code,you can reference:
84         select @sql='"C:\Program Files (x86)\WinRAR\rar.exe" a -ep '+@RarFullFileName+' '+@BakFullFileName
85         exec xp_cmdshell @sql        
86    */
87    
88    set @DynamicSQL='cd /d D:\Program Files\7-Zip&&7z a '+@backup_path_detail+'\'+CONVERT(char(8),GETDATE(),112)+'.zip '+@backup_path_detail+'\*.bak -mx9'
89    exec xp_cmdshell @DynamicSQL   
90    -------------------------------end of compressing file----------------------------------------
91 end
92 
93 
94 --exec sp_BackupDBBatch 'F:\bakDB','Arc'
 1 USE [master]
 2 GO
 3 /****** Object:  StoredProcedure [dbo].[backupDB]    Script Date: 09/27/2013 23:33:02 ******/
 4 SET ANSI_NULLS ON
 5 GO
 6 SET QUOTED_IDENTIFIER ON
 7 GO
 8 ALTER PROC [dbo].[backupDB] 
 9 (
10   --We'd better add bracket even if no parameters,it is up to you.
11   @DatabaseName nvarchar(200), 
12   @Path nvarchar(200)
13 )
14 AS
15 BEGIN
16  DECLARE @FileName varchar(200),@sql varchar(1000)
17  --RIGHT function:return the @Path last X word
18  --CONVERT function:CONVERT(data_type(length),data_to_be_converted,style)
19  --112 representative yymmdd format
20  --108 representative hh:mm:ss format
21   SET @FileName=@Path+(CASE WHEN RIGHT(@Path,1)<>'\' THEN '\' ELSE '' END)
22            +@DatabaseName+'_'+CONVERT(char(8),GETDATE(),112)+'_' 
23            +replace(convert(char(8),getdate(),108),':','')+'.bak'
24   --to explain the ''':the ' before to and the last ' was a couple.
25   --the backup folder must be exists,and N must be uppercase.
26   --what's the 'N' meaning?It means the varible using code with unicode.
27   SET @sql='backup database '+@DatabaseName+' to disk =N'''+@FileName+''''
28   EXEC(@sql)
29  END

This code have many comment,if someone make it progress,thank you!