1.if语句

  if语句有三种用法:判断之前命令的返回值、判断字符串相等、判断文件存在。

1.1.判断上条指令的返回值,返回值卯准了,就执行紧跟着的命令,要不就执行else的命令。

>echo %errorlevel%
>if errorlevel 0 (echo ok) else (echo false)
ok

>if not errorlevel 0 (echo ok) else (echo false)
false


1.2.判断环境变量与字符串是否相等

>if %os%=="win_nt" (echo "win_nt") else (echo %os%)
Windows_NT


1.3.判断文件是否存在

>if exist %catalina_base%\conf\server.xml (echo ok) else (echo false)
ok

>if exist %catalina_base%\conf\servers.xml (echo ok) else (echo false)
false


2.set

  显示、设置或删除“cmd.exe环境变量”。

2.1.显示所有环境变量、显示以某个字母开头的变量

>set
……
>set ca
CATALINA_BASE=C:\web\webapps
CATALINA_HOME=C:\web\apache-tomcat-7.0.75

>set j
JAVA_HOME=C:\web\jdk1.8.0_121
JRE_HOME=C:\web\jdk1.8.0_121\jre


要是显示的变量不存在,“errorlevel”变量置1。

C:\Users\Administrator>set paol
环境变量 paol 没有定义

C:\Users\Administrator>echo %errorlevel%
1


2.2.设定变量

>set OS=Windows_NT


3.call

  调用另一个批处理程序

if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
call "%CATALINA_BASE%\bin\setenv.bat"

读取环境变量配置


4.exit

  退出“cmd.exe”程序、当前批处理脚本。语法格式“exit /b /exitcode”。

退出脚本“/B”

exit /B


退出脚本,返回0

exit /B 0


看看返回值

>type haha.bat
@echo off
echo ok
exit /B 33
>haha.bat
ok

>echo %errorlevel%
33


  在脚本中,没有函数,但是可以通过跳转执行类似函数的效果(或者通过call调用)。跳转时会越过某些语句行,例如

>type haha.bat
@echo off
rem No JRE given, use JAVA_HOME as JRE_HOME
set "JRE_HOME=%JAVA_HOME%"

:gotJreHome
rem Check if we have a usable JRE
if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome
if not exist "%JRE_HOME%\bin\javaw.exe" goto noJreHome
goto okJava

:noJreHome
rem Needed at least a JRE
echo The JRE_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto exit

:okJava
rem Don't override the endorsed dir if the user has set it previously
echo "Will not be execute."

:exit
echo ok
exit /B 33

>echo %java_home%
C:\web\jdk1.8.0_121

>haha.bat
The JRE_HOME environment variable is not defined correctly
This environment variable is needed to run this program
ok



1 编辑本地DNS文件

  在本地实现dns解析可以给工作带来很多便利,最简单的实现就是hosts文件了。可是每次编辑时真是麻烦。这里把针对该文件的编辑由一个命令直接实现。文件名就保存为hosts.cmd,放在系统PATH下。

@echo off
notepad c:\Windows\System32\drivers\etc\hosts


2 putty的文件传输

  要是更习惯命令行操作,那么putty提供的命令可以这样编辑。这个保存为cp.cmd,这个命令更像linux环境,跟windows的copy也不冲突。

@echo off
pscp.exe -l weblogic -i C:\Users\Donatello\win.ssh\h1\id_rsa-2p.ppk %1 %2


  使用时,连用户名密码都不用输入,只需要指定源文件路径和文件名、目标路径文件名即可。

  如果是需要启动putty,怎么做?答案是直接复制一份到PATH即可。啥都不用干


3 SecureCRT

  这个要么是安装的、要么是复制的,要是想直接“ctrl+r”快速启动(避免动鼠标)?

  又来了,……,名字就看个人爱好了。

C:\WINDOWS\system32>copy hosts.cmd crt.cmd
已复制         1 个文件。
C:\WINDOWS\system32>notepad.exe crt.cmd
C:\WINDOWS\system32>crt
C:\WINDOWS\system32>type crt.cmd
@echo off
"C:\Program Files (x86)\securecrt\SecureCRT.exe"






* 有个问题

  cp.cmd,如果拷贝的目标不是俩参数(参数不确定呢),要是还想用cmd脚本以cp命令执行,该怎么写?

D:\Desktop>pscp ping.sh ping2.sh cer.sh root@hp:/root
root@hp's password:
ping.sh                   | 0 kB |   0.3 kB/s | ETA: 00:00:00 | 100%
ping2.sh                  | 0 kB |   0.4 kB/s | ETA: 00:00:00 | 100%
cer.sh                    | 0 kB |   0.4 kB/s | ETA: 00:00:00 | 100%