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%