CMD常用命令02定期备份Oracle

项目实施后,为了以防万一,决定每天夜里备份数据库
虽然Oracle本身就有自动备份的功能,但我仍然不放心于是用bat和windows的任务计划进行了备份

REM HANSEN 2011-03-31
REM 用于备份Oracle数据库
color 2

set FilePath=S:/Backup/
set UserName=user
set PassWord=pwd
set ServiceName=orcl

if not exist "%FilePath%" (exit)

set FileName=%DATE:~0,10%-%TIME:~0,8%
set FileName=%FileName::=-%

set FileName=%FileName: =0%
set DBFile=%FilePath%%FileName%.dmp
set LogFile=%FilePath%%FileName%.log

echo ORACLE数据库备份开始
echo %DATE:~0,10% %TIME:~0,8%
echo ORACLE数据库备份数据保存到%DBFile%
echo ORACLE数据库备份日志保存到%LogFile%

exp %UserName%/%PassWord%@%ServiceName% file=%DBFile% log=%LogFile% compress=y direct=n rows=y 
owner='%UserName%' consistent=n constraints=y grants=y indexes=y triggers=y

另外又加了个定期删除的bat,但这个有些问题的,就是只考虑了备份文件的创建时间,并没有考虑到要保留几个备份
换句话说,当连续7天备份失败后,就没有备份了,所以请修改一下再用

Rem Delete Files Older Than One Week
set FilePath=E:/Backup/
forfiles /p %FilePath% /s /m *.dmp /d -7 /c "cmd /c del @file
forfiles /p %FilePath% /s /m *.log /d -7 /c "cmd /c del @file

Linux常用命令10Vim常用操作

0.基本操作
0.1多行复制
0.1.1、复制方法一
A、将光标移动到要复制的起始行
B、如果复制1行,则按下yy,如果是复制n行,则按下nyy
C、光标移动到粘贴地点,按下p

0.1.2、复制方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no co target_line_no

0.1.3、复制方法三(方法二+标签)
A、将光标移动到要复制的起始行,输入ma
B、将光标移动到要复制的结束行,输入mb
C、将光标移动到要复制的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b co ‘c

0.1.4、剪切方法一
A、将光标移动到要剪切的起始行
B、如果剪切1行,则按下dd,如果是剪切n行,则按下ndd
C、光标移动到粘贴地点,按下p

0.1.5、剪切方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no m target_line_no

0.1.6、剪切方法三(方法二+标签)
A、将光标移动到要剪切的起始行,输入ma
B、将光标移动到要剪切的结束行,输入mb
C、将光标移动到要剪切的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b m ‘c

1.正则表达式
1.1.行首、行尾及空格
1.1.1 符号具体含义

^表示行首
$表示行尾
\s表示空格

1.1.2 应用举例

在全局范围内删除开始空格
:%s/^\s\+/

删除末尾空格
:%s/\s\+$/

删除空行
:g/^$/d

删除空白行
:g/^\s\+$/d

删除-开始的行
:g/^-/d

2.Table与空格互转
2.1、空格转TAB

:set ts=8
:set expandtab
:%retab!

2.2、TAB转空格

:set ts=8
:set noexpandtab
:%retab!

3.删除重复行
3.1、方法一

先排序
:sort
然后删除的重复项的后面一项
:g/\%(^\1$\n\)\@<=\(.*\)$/d

3.2、方法二

先排序
:sort
然后删除重复项的前面一项
:g/^\(.*\)$\n\1$/d

3.3、方法三

先排序
:sort
然后将所有重复记录替换为第一条
:%s/^\(.*\)\(\n\1\)\+$/\1/

4.奇偶行
4.1、删除奇数行

%s/\(^.*$\)\n\(^.*$\)/\1

4.2、删除偶数行

%s/\(^.*$\)\n\(^.*$\)/\2

4.3、奇偶行合并,以tab分隔

%s/\(^.*$\)\n\(^.*$\)/\1\t\2

%s/\n\(.*\n\)/\t\1

5.生成行号
5.1、方法1

:r !seq 1 100

5.2、方法2

:let n=0 | g/^/s//\=n/|let n+=1 

6、每行首字母大写

%s/^\([a-z]\)/\U\1/

7.将行调整为固定宽度

:s/\v(.{80})/\1\r/g

CMD常用命令01%1的用法两则

1.新建个bat文件
然后在里面写上:
attrib +h +s %1
然后把任意文件或文件夹拖放到上面,
就可以把其设成系统+隐藏属性了。

2.新建鼠标右键菜单
名称:用记事本打开
命令:notepad %1
这样就能随时用记事本打开文件了。

还有,不仅%1呢,%2,%3都可以的,
比如一次想把很多文件设成隐藏属性时,
一起拖拽到文件图标上就好了,自己试试吧。

attrib +h +s %1
attrib +h +s %2
attrib +h +s %3
attrib +h +s %4
attrib +h +s %5
attrib +h +s %6
attrib +h +s %7
attrib +h +s %8
attrib +h +s %9

一个有趣的VC6题目

在VC6 Debug环境下,要求填补一段代码,使输入与输出一致。

    #Include <Stdio.h>  
    void test()  
    {  
        int t;  
        scanf("%d", &t);  
       /*  
       在这里填写代码…… 
       */  
    }  
    int main()  
    {  
        int m;  
        test();  
        printf("%d", m);  
    }  

方法一:

    int* pt = &t;  
    pt += 22;  
    *pt = t  

方法二:

    #Include <windows.h>  
    DWORD addrEbp;  
    _asm  
    {  
        mov addrEbp,ebp;  
    }  
    DWORD *pm=(DWORD *)(addrEbp + 0x80-0x28 -4);  
    *pm=t;  

两种方法都是直接修改了内存,呵呵,还是蛮有意思的啦。

Linux常用命令09tar压缩解压文件

1、压缩文件

#只归档不压缩
tar –cf OUT_FILE_NAME.tar PATH_TO_FOLDER
#归档后用gzip压缩
tar –czf OUT_FILE_NAME.tar.gz PATH_TO_FOLDER
#归档后用bzip2压缩
tar –cjf OUT_FILE_NAME.tar.bz2 PATH_TO_FOLDER
#归档后用compress压缩
tar –cZf OUT_FILE_NAME.tar.Z PATH_TO_FOLDER

2、解压文件

#解压tar
tar –xvf IN_FILE_NAME.tar
#解压tar.gz
tar -xzvf IN_FILE_NAME.tar.gz
#解压tar.bz2
tar -xjvf IN_FILE_NAME.tar.bz2
#解压tar.Z
tar -xZvf IN_FILE_NAME.tar.Z

VBS枚举硬盘信息

1、GetHDInfo.vbs
这个脚本,是Google后找到的,虽然是VBS,但比网上绝大多数的代码,靠谱的多得多

'---------------------------------------------------
'Get the properties of all partitions on all drives, 
'including USB drives.
'Core code from the Scripting Guy
'7.1.2012 FNL
'---------------------------------------------------
Set oWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set cDiskDrives = oWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive")

For Each oDrive In cDiskDrives
	WScript.echo "Disk #" & oDrive.Index & "(" & oDrive.InterfaceType & "): " _
		& oDrive.Caption & ", Size=" & Format(oDrive.Size, False) & " MBytes"
	WScript.echo "Part.  Drive          F/S   Size(MBytes)  Free(MBytes)  Active  Primary"
	WScript.echo String(71, "-")

	'WScript.Echo "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & Replace(oDrive.DeviceID, "\", "\\") & """} WHERE AssocClass = " & "Win32_DiskDriveToDiskPartition"

	Set cPartitions = oWMIService.ExecQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" _
		& Replace(oDrive.DeviceID, "\", "\\") & """} WHERE AssocClass = " & "Win32_DiskDriveToDiskPartition")
 
	For Each oPartition In cPartitions
		aPartition = Split(oPartition.DeviceID)
		Set cLogicalDisks = oWMIService.ExecQuery _
	 		("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & oPartition.DeviceID _
			& """} WHERE AssocClass = Win32_LogicalDiskToPartition")
 		if oPartition.Bootable         then sActive  = "Yes" Else sActive  = "No "
 		if oPartition.PrimaryPartition then sPrimary = "Yes" Else sPrimary = "No "
		For Each oLogicalDisk In cLogicalDisks
			For Each oVolume In cLogicalDisks
				sLabel = Left(oVolume.VolumeName & Space(12), 12)
			Next
			With oLogicalDisk
				sSpacer = Space(8 - Len(.FileSystem))
	 	   		WScript.Echo " " & aPartition(3) & "    " & .DeviceID & " " & sLabel _
				& .FileSystem & sSpacer & Format(.Size, True) & "       " _
				& Format(.FreeSpace, True) & "     " & sActive & "     " & sPrimary
			End With
		Next
	Next
	WScript.Echo
Next

Function Format(n, bPad)
	n = FormatNumber(n/1000000, 0, -1, 0, -1)
	if bPad then Format = Space(7-Len(n)) & n Else Format = n
End Function

2、运行

@REM do not use wscript GetHDInfo.vbs
@cscript GetHDInfo.vbs

Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Disk #1(IDE): Hitachi HTS545032B9A302 ATA Device, Size=320,070 MBytes
Part.  Drive          F/S   Size(MBytes)  Free(MBytes)  Active  Primary
-----------------------------------------------------------------------
 #1    D: WinAPP      NTFS    319,862       182,455     No      Yes

Disk #0(IDE): Samsung SSD 850 EVO 500GB ATA Device, Size=500,105 MBytes
Part.  Drive          F/S   Size(MBytes)  Free(MBytes)  Active  Primary
-----------------------------------------------------------------------
 #1    E: MacSSD      HFS     256,114        89,747     No      Yes
 #3    C: BOOTCAMP    NTFS    242,999        45,934     Yes     Yes

Press any key to continue . . .

Linux常用命令08cp命令强制覆盖文件

最近,用cp命令拷贝文件夹时,发现即使用了-f选项,覆盖文件夹时,仍然要一个文件一个文件的确认,吐血啊。

后来发现,我调用的cp命令其实是一个别名,用alias命令就可以看到了。

alias cp=’cp -i’

额,系统为了安全,默认强制大家在覆盖前,逐个进行确认。知道了原因,那解决问题就简单了。

方法一、用管道,对每个提醒直接进行确认

yes|cp -fr src dest

方法二、取消别名

unaslias cp 

方法三、强制使用cp命令,而不是使用别名

\cp -fr src dest 

Linux常用命令05scp上传及下载文件

1、从服务器上下载文件

scp username@servername:/remote_path/remote_filename /local_path

2、上传本地文件到服务器

scp /local_path/local_filename username@servername:/remote_path   

3、从服务器下载整个目录

scp -r username@servername:/remote_path/remote_foldername /local_path

4、上传目录到服务器

scp -r /local_path/local_foldername username@servername:/remote_path