Open ckjbug opened 4 years ago
@each off --去掉盘符等内容
帮助手册:
/? <=> -help net user /help
CD切换目录:
cd /? --获取使用帮助
cd \ --跳转到硬盘的根目录
cd C:\WINDOWS --跳转到当前硬盘的其他文件
d: --跳转到其他硬盘
cd /d e:\software --跳转到其他硬盘的其他文件夹 注意此处必须加/d参数。否则无法跳转。
cd.. --跳转到上一层目录
算数运算:
set /a 1+ 3 --/a:命令行开关指定等号右边的字符串为被评估的数字表达式。
% --取余
重定向运算符:
> --输出到文档 >> --追加输出
< <<
查看文档:
type a.txt
多命令运算符:
&& --第一个命令错误则不会执行第二个命令
|| --第一个命令执行成功则不会执行第二个命令
管道信号:
dir | find ".txt" --找出当前路径下所有.txt文件
netstat -ano | find "ESTABLISH" --找出当前与本机建立连接的所有网络
Demo:要查出那个进程占用了你的端口导致端口冲突
netstat -aon|findstr ":9050" --查看指定端口的占用情况
tasklist|findstr "2016" --查看PID对应的进程
taskkill /f /t /im tor.exe --结束该应用的进程
批处理文件接收参数:
net user %1 %2 /add --CMD执行:*.bat 参数1 参数2
路径参数:
@echo off
echo %~f0 --C:\Users\Administrator\Desktop\test.bat %~f0:表示当前批处理的绝对路径,去掉引号的完整路径
echo %~0 --C:\Users\Administrator\Desktop\test.bat %~0:表示当前批处理的路径,去掉引号的路径
echo %0 --"C:\Users\Administrator\Desktop\test.bat" ~:去掉当前路径字符串的引号 0:代表你的批处理本身
echo %~d0 --C:
echo %~p0 --\Users\Administrator\Desktop\
echo %~dp0 --C:\Users\Administrator\Desktop\ d p:是FOR 命令的扩展
pause
for循环:
for /r %%i in(*.txt) do( --/r:遍历子文件夹 %%i:当前的.txt文件
set filename = %%~ni --%%~ni:当前的.txt文件名字
set file = %%i
copy %%i %~dp0\Events\%%~ni\abc.txt
copy %~dp0\Input\*.jpg %~dp0\Events\%%~ni\%%~ni.jpg
for /r c:\\ %%i in (*.exe) do echo %%i --把C盘根目录和每个目录的子目录下面全部的EXE文件都列出来
@echo off
for /l %%i in (1,1,5) do ( --/l:该集表示以增量形式从开始到结束的一个数字序列 in(start,step,end)
echo %%i
)
pause
结果:1,2,3,4,5
@echo off
for %%i in (1,1,5) do (
echo %%i
)
pause
结果:1,1,5
for /l %%i in (100,-20,1) do @echo %%i --输出100,80,60,40,20
for /l %%i in (1,1,5) do start cmd --打开5个CMD窗口
for /l %%i in (1,1,5) do md %%i --建立从1~5共5个文件夹
for /d %%i in (c:\\*) do echo %%i --显示c盘根目录下的所有目录 /d :参数只能显示当前目录下的目录名字
for /d %%i in (???) do echo %%i --显示当前目录下名字只有1-3个字母的目录
for %%i in (t*.*) do echo %%i --显示当前目录下与t*.*相匹配的文件(只显示文件名,不显示路径)
for %%i in (d:\\mydocuments\\*.doc) do @echo %%i --显示d:\\mydocuments\\目录下与*.doc相匹配的文件
for /f %%i in (test.txt) do echo %%i --解析文本,读取字符串(遍历文本的每一行)
for /f "tokens=2 delims=、." %%i in (test.txt) do echo %%i --delims:字符分割 tokens:提取列内容 每一列用、.分割,选取第二列内容
[for /f命令之—Delims和Tokens用法&总结](https://blog.csdn.net/hutuchongaini/article/details/35290989)
^ 转义符(^<)
if判断:
if "%1" == "%2" goto usage
if not "%1" == "%2" goto usage
if exist C:/a.txt del C:/a.txt
if not exist C:/a.txt del C:/a.txt
Demo:借批处理自动清除系统垃圾
@echo off
if exist c:\windows\temp\*.* del c:\windows\temp\*.*
if exist c:\windows\Tempor~1\*.* del c:\windows\Tempor~1\*.*
if exist c:\windows\History\*.* del c:\windows\History\*.*
if exist c:\windows\recent\*.* del c:\windows\recent\*.*
: goto:
@echo off
:start
set /a var+=1
echo %var%
if %var% leq 3 GOTO start --leq:less than or equal,小于或等于
pause
@echo off
set /p input=创建用户请输入1.删除用户请输入2,退出请输入0:
if %input%==1 goto 1
if %input%==2 goto 2
if %input%==0 goto 0
:1
call:创建用户
goto:eof
:2
call:删除用户
goto:eof
:0
exit
call:创建用户
goto:eof
call:删除用户
goto:eof --运行goto:eof后,CMD返回并将等待下一命令
:创建用户
set /p user=请输入要创建的用户名: --/p:命令行开关允许将变量数值设成用户输入的一行输入
set /p pwd=请输入要创建用户的密码:
net user %user% %pwd% /add
echo 当前用户有:
net user
goto:eof
:删除用户
set /p user=请输入要删除的用户名:
net user %user% /del
echo 当前用户有:
net user
pause
goto:eof
pushd 、popd:
切换当前目录
@echo off
c: & cd\ & md mp3 --在 C:\ 建立 mp3 文件夹
md d:\mp4 --在 D:\ 建立 mp4 文件夹
cd /d d:\mp4 --更改当前目录为 d:\mp4
pushd c:\mp3 --保存当前目录,并切换当前目录为 c:\mp3
popd --恢复当前目录为刚才保存的 d:\mp4
errorlevel: --程序返回码
echo %errorlevel% --每个命令运行结束,可以用这个命令行格式查看返回码。用于判断刚才的命令是否执行成功。默认值为 0,一般命令执行出错会设 errorlevel 为 1
@echo off
dir c:
rem 退出代码为>=1 就跳至标题 1 处执行,>=0 就跳至标题 0 处执行
IF ERRORLEVEL 1 goto 1
IF ERRORLEVEL 0 goto 0
Rem 上面的两行不可交换位置,否则失败了也显示成功。
:0
echo 命令执行成功!
Rem 程序执行完毕跳至标题 exit 处退出
goto exit
:1
echo 命令执行失败!
Rem 程序执行完毕跳至标题 exit 处退出
goto exit
:exit --运行exit后,CMD将直接关闭并返回到曾启动Cmd.exe 的程序或返回到“资源管理器”
pause
运行显示:命令执行成功!
setlocal与变量延迟:
@echo off
set a=3
set a=4 & echo %a%
pause
结果:3
@echo off
set a=3
set a=4
echo %a%
pause
结果:4
@echo off
set a=4
set a=5 & echo !a! --!a!启用变量延迟
pause
结果:5
-------------------------------------------------
访问网址:
explorer http://www.baidu.com
打开文件夹或文件:
start D:\文件夹1 --打开文件夹
start D:\文件夹1\test.txt --打开文件
start explorer d:\ --调用图形界面打开 D 盘
复制:
copy /? --将一份或多份文件复制到另一个位置
xcopy /? --复制文件和目录树
重命名:
ren *.txt *.mp3
创建文件夹:
md A,B,C,D
创建文件:
cd .>a.txt --当前路径下创建a.txt文件
逐屏显示输出:
more +5 "cmd.txt" > "cmd1.txt" --把当前路径下cmd.txt文件的后5行内容写入cmd1.txt文件中
提取文件名:
dir *.lnk /b > test.txt --将当前文件夹下所有应用名写入到test.txt文件中
dir *.lnk /b/s > test.txt --将当前文件夹下所有应用名写入到test.txt文件中(带有文件路径)
-------------------------------------------------
Demo
Demo1:
::修改文件名(拼接日期)
@echo off
set title=title hello --这里的%title%,相当于运行title hello这个命令
%title%
set name=%date:~0,10% --取%date% 变量从0位开始取10个字符
echo %name%
ren test.txt %name:/=-%test.txt --%name:/=-%意思是替换name变量值中“/”为“-”
pause
Demo2:
::批处理实现屏幕截图(CMD调用.NET Framework框架中的csc编译器C#代码进行截屏,当然也可以把cs代码写到外面,然后在CMD调用cs编译器进行编译)
@echo off
set "dnfpath=%systemroot%\Microsoft.NET\Framework"
for /f "delims=" %%v in ('dir /ad /b %dnfpath%\v?.*') do (
if exist "%dnfpath%\%%v\csc.exe" set "cscpath=%dnfpath%\%%v\csc.exe"
)
< "%~f0" more +20 > "%temp%\estCapture.cs"
%cscpath% /out:"%cd%\estCapture.exe" "%temp%\estCapture.cs" 1>nul
estCapture.exe
start estCapture.bmp
::ping -n 1 127.1>nul 中-n 2 的作用主要还是为了缩短ping的时间,127.0.0.1可以缩写成 127.1 它是本机的ip , -n 2 的意思为发送两次数据包 默认为4次 ,>nul的作用是不显示ping的结果
ping -n 2 127.1 1>nul
del estCapture.exe
goto:eof
:estCapture
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
public class MyClass
{
public static void Main()
{
Image img = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);
Graphics g = Graphics.FromImage(img);
g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);
img.Save("estCapture.bmp", ImageFormat.Bmp);
}
}
Demo3:
::将文本内容写入剪贴板
@echo off
mshta vbscript:clipboardData.SetData("text","将文本内容写入剪贴板")(window.close)
pause
@echo off
type test.txt | clip
pause
@echo off
set /p str=<test.txt --赋值当前文件的第一行
echo %str%|clip
pause
强制关闭windows进程:
windows7之下: ntsd -c q -p pid
windows7以上:tskill pid
Demo4:自动清除系统垃圾(Temp)
@echo off
echo 正在清除系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清除系统垃圾完成!
echo. & pause
Oracle数据库
PL/SQL使用
快捷键 https://www.cnblogs.com/linjiqin/archive/2013/06/24/3152538.html
1,快速选择行:Shift + Home/End 2,找回最近删除的Sql语句(已编译执行过的sql):Ctrl + E 3,智能提示:F6 4,自动替换:快捷输入SQL语句,例如输入s,按下空格,自动替换成SELECT;再例如,输入sf,按下空格,自动替换成SELECT FROM,非常方便,节省了大量的时间去编写重复的SQL语句。 设置方法: 1)、建立一个文本文件shortcuts.txt(一般在PlugIns会自带这个文件),并写入如下内容: i=INSERT u=UPDATE s=SELECT f=FROM w=WHERE o=ORDER BY d=DELETE df=DELETE FROM sf=SELECT FROM sc=SELECT COUNT() FROM sfu=SELECT FROM FOR UPDATE cor=CREATE OR REPLACE p=PROCEDURE fn=FUNCTION t=TIGGER v=VIEW; 复制代码另存到PL/SQL Developer的安装路径下的~/PlugIns目录下 2)、Tools–>Preferences–>User Interface–>Editor–>AutoReplace,选中Enable复选框,然后浏览文件选中之前创建的shortcuts.txt,点击Apply
SQL语法 https://www.cnblogs.com/klb561/p/10527336.html
表 dual;
where:过滤行 group by:对过滤后的行进行分组 having():对分组后的行进行过滤
decode:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
distinct:
nvl:nvl(A, B),如果A为null,则返回B,否则返回A。
instr:字符查找函数 格式一:instr( string1, string2 ) // instr(源字符串, 目标字符串) select instr('helloworld','l') from dual; --返回结果:3 默认第一次出现“l”的位置 select instr('helloworld','lo') from dual; --返回结果:4 即“lo”同时(连续)出现,“l”的位置 select instr('helloworld','wo') from dual; --返回结果:6 即“w”开始出现的位置
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字符串, 目标字符串, 起始位置, 匹配序号) select instr('helloworld','l',2,2) from dual; --返回结果:4 也就是说:在"helloworld"的第2(e)号位置开始,查找第二次出现的“l”的位置 select instr('helloworld','l',3,2) from dual; --返回结果:4 也就是说:在"helloworld"的第3(l)号位置开始,查找第二次出现的“l”的位置 select instr('helloworld','l',4,2) from dual; --返回结果:9 也就是说:在"helloworld"的第4(l)号位置开始,查找第二次出现的“l”的位置 select instr('helloworld','l',-1,1) from dual; --返回结果:9 也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第一次出现的“l”的位置 select instr('helloworld','l',-2,2) from dual; --返回结果:4 也就是说:在"helloworld"的倒数第2(l)号位置开始,往回查找第二次出现的“l”的位置 select instr('helloworld','l',2,3) from dual; --返回结果:9 也就是说:在"helloworld"的第2(e)号位置开始,查找第三次出现的“l”的位置 select instr('helloworld','l',-2,3) from dual; --返回结果:3 也就是说:在"helloworld"的倒数第2(l)号位置开始,往回查找第三次出现的“l”的位置
trunc:对时间类型或者数字进行截取操作 trunc(Date)的用法一般有以下几种: select sysdate from dual select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual select trunc(sysdate,'yyyy') from dual --当年的第一天 select trunc(sysdate,'mm') from dual --当月的第一天 select trunc(sysdate,'dd') from dual --当前时间(精确到天) select trunc(sysdate,'d') from dual --当前星期的第一天 select trunc(sysdate,'hh') from dual --当前时间(精确到小时) select trunc(sysdate,'mi') from dual --当前时间(精确到分钟,没有精确到秒的)
trunc(number)的用法一般有以下几种: trunc(55.5,-1) = 50; //-1(负数)表示从小数点左边第一位截取后面全置为零; trunc(55.55,1) = 55.5; //1(正数)表示小数点后面保留一位; trunc(55.55) = 55; //截取整数部分;
substr:字符截取函数 格式1:substr(string string, int a, int b); 1、string 需要截取的字符串 2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取) 3、b 要截取的字符串的长度 select substr('HelloWorld',0,3) value from dual; //返回结果:Hel,截取从“H”开始3个字符 select substr('HelloWorld',1,3) value from dual; //返回结果:Hel,截取从“H”开始3个字符 select substr('HelloWorld',2,3) value from dual; //返回结果:ell,截取从“e”开始3个字符 select substr('HelloWorld',0,100) value from dual; //返回结果:HelloWorld,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。 select substr('HelloWorld',5,3) value from dual; //返回结果:oWo select substr('Hello World',5,3) value from dual; //返回结果:o W (中间的空格也算一个字符串,结果是:o空格W) select substr('HelloWorld',-1,3) value from dual; //返回结果:d (从后面倒数第一位开始往后取1个字符,而不是3个。原因:下面红色 第三个注解) select substr('HelloWorld',-2,3) value from dual; //返回结果:ld (从后面倒数第二位开始往后取2个字符,而不是3个。原因:下面红色 第三个注解) select substr('HelloWorld',-3,3) value from dual; //返回结果:rld (从后面倒数第三位开始往后取3个字符) select substr('HelloWorld',-4,3) value from dual; //返回结果:orl (从后面倒数第四位开始往后取3个字符)
格式2:substr(string string, int a) ; 1、string 需要截取的字符串 2、a 可以理解为从第a个字符开始截取后面所有的字符串。 select substr('HelloWorld',0) value from dual; //返回结果:HelloWorld,截取所有字符 select substr('HelloWorld',1) value from dual; //返回结果:HelloWorld,截取所有字符 select substr('HelloWorld',2) value from dual; //返回结果:elloWorld,截取从“e”开始之后所有字符 select substr('HelloWorld',3) value from dual; //返回结果:lloWorld,截取从“l”开始之后所有字符 select substr('HelloWorld',-1) value from dual; //返回结果:d,从最后一个“d”开始 往回截取1个字符 select substr('HelloWorld',-2) value from dual; //返回结果:ld,从最后一个“d”开始 往回截取2个字符 select substr('HelloWorld',-3) value from dual; //返回结果:rld,从最后一个“d”开始 往回截取3个字符
like:
trim(ltrim,rtrim):https://www.cnblogs.com/lanzi/archive/2013/01/14/2859666.html
reverse() :字符串翻转函数
存储过程
函数
触发器 https://www.cnblogs.com/klb561/p/11080445.html
语法: create [or replace] tigger 触发器名 触发时间 触发事件 on 表名 [for each row] begin pl/sql语句 end 触发器名:触发器对象的名称。由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。 触发时间:指明触发器何时执行,该值可取: before:表示在数据库动作之前触发器执行; after:表示在数据库动作之后触发器执行。 触发事件:指明哪些数据库动作会触发此触发器: insert:数据库插入会触发此触发器; update:数据库修改会触发此触发器; delete:数据库删除会触发此触发器。 表名:数据库触发器所在的表。 for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
分析函数 over():
Oracle优化