文章目录
1.Putty小工具
1.1通过window远程访问linux,并执行命令
#linux中已经设置mysqldump的登录与账号密码,所以这里不需要
plink -ssh -pw 123456 root@192.168.184.132 "mysqldump mysql>/data/mysql.sql"
1.2.通过window远程访问linux 的mysql,并传输文件到本地目录
下载 上传
###下载
pscp -sftp -pw 123456 root@192.168.184.132:/data/mysql.sql F:\
#成功,输出信息如下
msyql.sql | 574kB | 574.3kb/s |ETA:00:00:00 |100%
###上传
#成功,输出信息如下
pscp -sftp -pw 123456 F:\ root@192.168.184.132:/data/mysql.sql
1.3Microsoft SQL Server的工具相关
bcp SYBASE公司提供的。实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。
BCP可以执行的4种操作
(1)导入
这个动作使用in命令完成,后面跟需要导入的文件名。
(2) 导出
bcp OIW_32769..ashare_ordwth out ashare_ordwth.txt -c -Usa -P10208130 -S10.208.130.6
解释:
OIW_32769…ashare_ordwth的特点其中…忽略了dbo
dbo为SQL Server的特点结构
例如图:
这个动作使用out命令完成,后面跟需要导出的文件名。
(3) 使用SQL语句导出
这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。
(4) 导出格式文件
这个动作使用format命令完成,后而跟格式文件名。
1.4应用组件和命令使用
1.winrar
winrar
a :备份所有文件;
-r:备份目录和子目录;
-af-指定压缩文件格式
ep 从名称中排除路径
ep1表示不把路径%USERPROFILE%保存在压缩文件中
2.符号
*任意的
dir E:\*.txt 搜索E盘下面任意的txt文件
-\范围表示符 for中会应用
+ copy命令里面会用到它,表示将很多个文件合并为一个文件
例如:copy E:\tmp.txt+E:\shell.txt E:\All.txt
:标签定位符
例如:goto
! 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用;在set /a中表示逻辑非。比如set /a a=!0,这时a就表示逻辑1
setlocal enabledelayedexpansion
echo.%nbr%. !p%nbr%!
Endlocal
‘’
在for/f中表示它们所包含的内容当作命令行执行并分析它的输出。
^ 取消转义字符,即将所有转义字符的转义作用关闭。同时还可以连接后面的字符
echo one two ^
there ^ hhhhhh ^s
fix
输出内容为one two there hhhhh fix
&执行多条命令,不理会是否成功
echo xxx & echo bbb
xxx
bbb
&&顺序执行多条命令,前一条成功,后面才执行
echo xxx && echo bbb
xxx
bbb
||顺序执行多条命令,前一条成功,后面不执行
echo xxx || echo bbb
xxx
|结果输出个后面
输出给后面的,并查询
echo xxxxx|findstr /I x
Xxxxx
>>输出追加
>>输出重定向
<< 输入追加
<输入重定向
3.系统内置变量
echo %USERNAME% #用户名
echo %~dp0 #当前盘符路径bat脚本中可以实现
echo %~sdp0 #当前盘符短路径bat脚本中可以实现
echo %~d0 #当前盘符bat脚本中可以实现
echo %~f0 #当前盘符全路径bat脚本中可以实现
echo %cd% #当前盘符与路径
set xath=%~dp0
echo %xath%
set xbth=%~d0
echo %xbth%
set xcth=%~f0
echo %xcth%
echo %~sdp0
echo %computername%
4.引用
call 调用批处理脚本
%1~%9 传参数
5.命令
echo 输出内容
@echo off 回显,把默认输出的路径屏蔽
echo. 换行输出
color 第一个为背景。第二个为字体颜色
例如:color a 设定字体颜色为淡绿色,背景为黑色默认 color c
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
del /Q /F 静默前置删除
例:
del /q /f F:\del.txt
findstr 搜索字符信息 /b begin 搜索开始部分 /i ignore不区分大小写
tmp.txt文本文件内容
hello1 A
hello2 B
findstr /b /i "hello" F:\tmp.txt
cls清除回显(显示的内容)
dir 显示文件列表
/s 子目录 /p 分页显示
dir /s E:\*.txt
dir /s /p E:\*.txt
title,是标题命令,执行bat程序后,标题将显示于窗口上面。
set 变量赋值,/a数学运算表达式,/p提示用户输入,variables::变量的截取与操作
set chioce=99;变量赋值
set /a a=1,b=2,c=a+b #数学运算,c=3
set /p a='values is string'
echo %a% #提示用户输入,赋值给a。取出a值变量
set /p b1='values is string'
'values is string'hello word and super
echo %b1%
hello word and super
echo %b1:~0,2% #截取出从第一位到字符到第二个字符。下标取值
he
echo %b1:~0,-2% #截取出从第一位到字符到倒数第二个字符。下标取值
hello word and sup
echo %b1: =$% #替换空格为$
:pause 暂停执行。(提示:按照任意命令继续,最好加>null,会把任意命令继续的内容重定向为空)
注释rem 与 ::
tasklist 显示进程列表
taskkill 终止进程 /F 强制 /PID 根据pid
copy 复制 /S 复制包含子目录文件,不带空目录 /E 复制包含子目录文件,带空目录
/y直接覆盖,不提醒
copy F:\tmp.txt E:\
覆盖 E:\tmp.txt 吗? (Yes/No/All): y
已复制 1 个文件。
date 查看年月日 星期
echo %date%
2019/07/16 周二
set ymd=%date:~0,10% #取年月日
set ymd=%ymd:/=% #取年月日/替换为-
echo %ymd%
2019-07-16
set ymc=%date:~5,5% #取月日
echo %ymc:/=-%
07-16
time 查看时分秒,微秒
set times= %time:~0,8% #取时分秒
15:53:20
echo %times::=$% #:号做替换为$
15$53$20
mode con 设置bat的设置窗体大小
设置 宽 行
mode con cols=30 lines=20
Shift更改批处理文件处理参数
例举:
@echo off
:round
if "%1"=="" goto cmd1
echo %1内容如下:
type %1
echo.
shift
goto round
:cmd1
echo 没有获取到参数,结束脚本.
goto end
:end
Cmd控制台下:
E:\filename.bat a.txt b.txt
解释:脚本中只接受一个参数。会根据参数传入数值,先传入a.txt ,然后再传入b.txt
setlocal延迟环境变量扩展
Setlocal延迟环境变量。对于bat语句有预处理的机制,就是命令做检查前。会被初始化默认值,但是预处理过后,执行bat命令并不能改变变量的值。就是说,而每条命令语句之间不能影响到变量的改变。
行命令不能等于条命令。行是编码书写的标准。但是条是命令所占的行内容为条(命令执行独占一行,或者复合语句的占多行,但只是一条)
例举
@echo off
set num=1
echo %num%
if %num% == 1 (
echo equ
set %num%=2
echo %num%
)
pause > nul
结果:num=1
看到num=1。复合语句中改变num并不起作用。因为没有变量延迟,所以初始化为num=1后。无法改变num值。所以加个延迟试下
if %num% == 1 (
echo equ
setlocal enabledelayedexpansion
echo !num!
set num=3
echo !num!
endlocal
)
echo %num%
输出结果为1 3 1 定义了局部的,并不影响全局的num
goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)
如:
goto end
:end
echo this is the end
GOTO :EOF #CMD 返回并将等待下一条命令
tasklist 显示进程列表
taskkill /F /PID 应用名称/ip kill进程
taskkill /F /PID cmd.exe
taskkill /F /PID 124010
:子程序
goto start
:start
echo son -----------------------------
6.语句 if while for
6.1 If语句
IF [NOT] ERRORLEVEL number command #判断执行结果
IF [NOT] string1==string2 command #判断字符串
IF [NOT] EXIST filename command #判断文件是否存在
if not defined 判断变量不存在
If defined 判断变量存在
断
EQU - 等于 NEQ - 不等于
LSS - 小于 LEQ - 小于或等于
GTR - 大于 GEQ - 大于或等于
例1
###判断是否执行成功,成功则提示ok,失败也提示failed
copy /Y F:\tmp.txt E:\
if %ERRORLEVEL% == 0 (
echo runing ok
) else (
echo runing failed
)
Pause
判断字符 相等的yes equ,失败提示no equ
set string1=helloA1
set string2=helloA2
if %string1% == %string2% (
echo yes equ
) else (
echo no equ
)
pause
判断文件存在
set filename=F:\tmp.txt
if exist %filename% (
echo file exist
) else (
echo file no exist
)
pause
判断实例
if 1 NEQ 1 (
echo ok-----------------
) else (
echo off--------------
)
6.2 for语句
FOR /F [“options”] %%i IN (file) DO command
FOR /F [“options”] %%i IN (“string”) DO command
FOR /F [“options”] %%i IN (‘command’) DO command
file代表一个或多个文件
string 代表字符串
command代表命令
[“options”] 可选
delims和tokens
delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键
Delims可以指定多个分割符空格,逗号
tokens作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个
例举 Tokens 1,2-3,* 取1,2,3,剩余 一共4个值,echo %%a %%b %%c %%d
Skip忽略文件的前多少行
Eol 用来指定当一行以什么符号开始
usebackq 增强型参数。可有可无。
tmp.txt
Hello1 A
Hello2 B
格式语句1
例如1:
for /f %%i in (F:\tmp.txt) do (
echo %%i
)
输出结果
Hello1
Hello2
注解:默认以空格作为分割符,所以取不出 A 与 B
例如2:
for /f "delims=;" %%i in (F:\tmp.txt) do (
echo %%i
)
pause
输出结果
Hello1 A
Hello2 B
注解:以;做分割,取消了默认空格分割,所以显示每行的所有
例如3
如果是以空格为分割,直接取
Tmp.txt
Hello1 A
Hello2 B
for /f "tokens=2 " %%i in (F:\tmp.txt) do (
echo %%i
)
pause
输出结果 A B
例3升级3.1
如果是以其他符号为分割,结合使用
Tmp.txt
Hello3;C
Hello4;D
for /f "delims=; tokens=2 " %%i in (F:\tmp.txt) do (
echo %%i
)
pause
输出结果
C D
例3升级3.2
如果是以其他符号为分割,输出第一个和第三个值
Tmp.txt
Hello3;C;A
Hello4;D;A
for /f "delims=; tokens=1,3" %%a in (E:\tmp.txt) do (
echo %%a %%b
)
pause
输出结果
Hello3 A
Hello4 B
例如4
取出除了第一行,排除有x为开始的行,以;分割 取1与2值
for /f "skip=1 eol=x delims=; tokens=1,2" %%a in (E:\tmp.txt) do (
echo %%a %%b
)
结果
hello2 B
hello3 C
hello4 D
实例5
以空格为分割
for /f "tokens=1,2 delims= " %%a in (E:\tmp.txt) do (
echo %%a %%b
)
格式语句1
#取字符串以;分割 取第二值与剩余的值
for /f "delims=; tokens=2,*" %%a in ("hello;A;word and mi to") do (
echo %%a %%b
)
格式语句2
解析:除了前三行,取第1列与3列,以空格分割。遍历命令tasklist(取应用名与PID)
for /f "skip=3 tokens=1,3 delims= " %%a in ('tasklist') do (
echo %%a %%b
)
输出
System Idle
System 4
Registry 104
smss.exe 488
csrss.exe 596
wininit.exe 696
csrss.exe 712
services.exe 768
winlogon.exe 804
lsass.exe 848
For高级应用
注释:除了第1行,不以x开头的,以;分割。取1列与3列值
Tmp.txt文件内容
Hello A
Hello B
Hello3;C;A
Hello4;D;A
for /f "skip=1 eol=x delims=; tokens=1,2" %%C in (E:\tmp.txt) do (
::set %%C %%D
set %%C=%%D
)
echo -------------
echo %hello3%
执行:获得hello3值是A
评价:可以不用再写脚本时候定义大量的变量。可以直接引用变量做操作