CMD常用命令07Bat截取字符串

%var:~n,k%
把这条命令理解为两条子命令
n为开始截取字符的位置,从左向右位置为(0,1,2,3 ...),从右向左位置为(-1,-2,-3,-4)
k为对n右侧字符截取到的位置,k>0从n向右截取的位置,k<0从字符串尾向前截取的位置
n默认从字符串最左边开始,k默认为截断到字符串尾
@echo off
rem echo %var:~n,k%
set str=0123456789

echo 字符串为:%str%
echo 第一个字符为:%str:~0,1%
echo 第二个字符为:%str:~1,1%
echo 倒数第一个字符为:%str:~-1,1%
echo 倒数第二个字符为:%str:~-2,1%
echo 截取前三个字符:%str:~0,3%
echo 截取后三个字符:%str:~-3,3%
echo 第三个字符及其之后的字符为:%str:~2%
echo 倒数第三个字符及其之后的字符为:%str:~-3%
echo 截取到倒数第三个字符:%str:~0,-3%
echo 截取倒数第五和第四个字符:%str:~-5,2%

pause

CMD常用命令05Cluster切换时丢失网关

公司在一家医院做实施,将Tomcat,存储,Oracle都做好了Cluster

但好景不长:
切换几次后,总会有一台服务器连不上,ping都ping不通,只好再手工切回去

后来发现,切换后把网关给丢掉了
在cmd下ipconfig -all,网关为空,但在连接属性的TCP/IP设置里,网关仍健在

唉,在google未果的情况下,只好做了件很无奈的事情,
写了个脚本,去设置网关

Rem Hansen
set myinterface=本地连接
set mygateway=192.168.100.1
netsh interface ip set address name="%myinterface%" gateway="%mygateway%" gwmetric=1
pause

居然还算管用,将就一下吧,唉

CMD常用命令03Windows实用命令

1.Tasklist

作用: 显示当前运行在本地或远程计算机上的应用程序、服务以及进程 ID (PID) 的列表

语法:TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]

参数列表:
  /S   system          指定连接到的远程系统。
  /U   [domain/]user   指定应该在哪个用户上下文执行这个命令。
  /P   [password]      为提供的用户上下文指定密码。如果忽略,提示输入。
  /M   [module]        列出所有其中符合指定模式名的DLL模块的所有任务。如果没有指定模块名,则显示每个任务加载的所有模块
  /SVC                 显示每个进程中的服务。
  /V                   指定要显示详述信息。
  /FO   format         指定输出格式。有效值: "TABLE"、"LIST"、"CSV"。
  /NH                  指定栏标头不应该在输出中显示。只对 "TABLE" 和 "CSV" 格式有效。
  /?                   显示帮助/用法。

列出了系统的进程,包括PID,内存使用大小.
加上了参数/svc ,这样就列出了每个进程所调用的服务

2.Taskkill

作用:结束一个或多个任务或进程。可以根据进程 ID 或图像名来结束进程。

语法:TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]

参数列表:
  /S   system          指定要连接到的远程系统。
  /U   [domain/]user   指定应该在哪个用户上下文执行这个命令。
  /P   [password]      为提供的用户上下文指定密码。如果忽略,提示输入。
  /F                   指定要强行终止进程。
  /PID process id      指定要终止的进程的PID。
  /IM   image name     指定要终止的进程的图像名。通配符 '*'可用来指定所有图像名。
  /T                   终止指定的进程和任何由此启动的子进程。
  /?                   显示帮助/用法。

3.Ntsd

第一步:打开进程管理器窗口,找到进程PID
第二步:输入ntsd -c q -p PID回车即可终止该进程。
只有System、SMSS.EXE和CSRSS.EXE进程不能被该命令杀死。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。

4.ping

用来检测一帧数据从当前主机传送到目的主机所需要的时间

ping命令的格式如下:
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-scount] [[-j host-list] | [-k host-list]] [-w timeout] destination-list

其中的参数说明如下:
-t 使当前主机不断地向目的主机发送数据,直到使用Ctrl-C中断;
-a 以IP地址格式(不是主机名形式)显示网络地址;
-n count 指定要做多少次ping,其中count为正整数值;
-l size 发送的数据包的大小; -f 设置回声分组不会由中间网关分组;
-i TTL 指定ping分组时限域,TTL是指在停止到达的地址前应经过多少个网关;
-v TOS 服务的类型; -r count 指出要记录路由的轮数(去和回);
-s count 指定当使用-r参数时,用于每一轮路由的时间;
-j host-list 指定希望分组的路由;
-k host-list 与-j参数基本相同,只是不能使用额外的主机;
-w timeout 指定超时时间间隔(单位为毫秒),缺省为1000;

一般我们使用得较多的参数为-t、-n、-w。 

5.ipconfig

用来显示主机内IP协议的配置信息。

ipconfig的命令格式如下:
ipconfig [/? | /all | /release [adapter] | /renew [adapter]]

其中的参数说明如下:
/? 显示ipconfig的格式和参数的英文说明;
/all 显示所有的配置信息;
/release 为指定的适配器(或全部适配器)释放IP地址(只适用于DHCP);
/renew 为指定的适配器(或全部适配器)更新IP地址(只适用于DHCP)。

使用不带参数的ipconfig命令可以得到以下信息:IP地址、子网掩码、默认网关。
而使用ipconfig /all,则可以得到更多的信息:主机名、DNS服务器、节点类型、网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等。

6.tracert

判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。

tracert命令的格式如下:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name 其中的

参数说明如下:
-d 不解析主机名;
-h maximum_hops 指定搜索到目的地址的最大轮数;
-j host-list 沿着主机列表释放源路由; -w timeout 指定超时时间间隔(单位毫秒)。

7.netstat

显示当前活动的网络连接的详细信息,如协议类型、当前主机与远端相连主机的IP地址以及它们之间的连接状态等。

netstat的命令格式如下:
netstat [-a] [-e] [-n] [-s] [-p proto] [-r] [interval] 其中的参数说明如下:

-a 显示所有主机的端口号;
-e 显示以太网统计信息;
-n 以数字表格形式显示地址和端口;
-p proto 显示特定的协议的具体使用信息;
-r 显示本机路由表的内容;
-s 显示每个协议的使用状态(包括TCP、UDP、IP);
interval 重新显示所选的状态,每次显示之间的间隔数(单位秒),按Ctrl+C中止重新显示。

8、arp

arp的命令格式如下:
arp -s inet_addr eth_addr [if_addr]
arp -d inet_addr [if_addr]
arp -a [inet_addr] [-N if_addr]

参数说明如下:
inet_addr IP地址;
eth_addr 以太网卡地址;
-a 显示某个IP地址的网卡地址(不加IP地址,显示所有已激活的IP地址的网卡地址)(使用该参数前应该先ping通某一个IP地址);
-d 删除指定IP地址的主机;
-s 增加主机和与IP地址相对应的以太网卡地址。

9.Fixmbr

重新构造主引导扇区。只修改主引导扇区记录,对其他扇区不进行写操作。

其基本命令格式如:
Fixmbr[Drive][/A][/D][/P][/Z][/H]

/A:Active DOS partition(激活基本DOS分区)
/D:Display MBR(显示主引导记录内容)
/P:Display partition(显示DOS分区的结构)
/Z:Zero MBR (将主引导记录区清零)
/H:Help (帮助信息)

如果直接键入FixMbr后按回车键,缺省的情况下将执行检查主引导区结构的操作。如果发现系统不正常,将出现是否进行修复的提示。
回答Yes后将搜索分区,当搜索到相应的分区以后,系统会提示是否修改主引导区,回答YES则会开始修复。如果搜索的结果不对,可使
用/Z开关符,重新启动系统将主引导区恢复到原来的状态。

10.Diskpart

利用它可实现对硬盘的分区管理,包括创建分区、删除分区、合并(扩展)分区。

Active:将一个分区标为 Aactive,让它成为系统盘。
Delete:删除分区。
Exit:退出Diskpart状态。
Extend:将分区的容量扩大。
Help:显示帮助信息。
List:列出磁盘或分区。
Select:选择要操作的对象,如一个磁盘或分区等。

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

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