zoukankan      html  css  js  c++  java
  • windows批处理初学贴出一些命令

    在cmd窗口中复制时,右键选标记,然后再选择此时选择区域就变白了。然后要么直接拖到要粘贴的地方,要么直接按回车存到剪贴板里。

    1、循环导入文件夹下面的文件到数据库中

    cd /d D:/Program Files/PostgreSQL/9.2/bin
    for /f "delims=" %%i in ('dir /b *.csv') do
    (
    echo '%%~dpi%%~nxi'>>all.txt
    psql -h 192.168.0.231 -U ***-d *** -p 5432 -c "copy mrs_1 from '%%~dpi%%~nxi' with CSV header"
    )
    echo '导入数据结束!'
    pause

    为什么上面的都用的是双%%?我一直是在命令行中敲的。发现俩%会报错。才知道命令行中只需要一个百分号就行了。


    2、start 调用外部程序该外部程序在新窗口运行,批处理程序继续往下执行
    例 start explorer f:
    call命令是用来调用具有bat或者cmd后缀的文件名。

     

    3、pushd和popd切换当前目录

     

    4、md 创建一个文件夹del删除文件。rd删除目录。md是makedir的简称和md作用一样。


    5、dir c:|find "txt" 打印出c盘下的且包含txt的文件(夹)名


    6、echo test ^>1.txt
    结果则是:test > 1.txt 所以^是转义字符。。^还可以用作续行符。


    7、这里&两边的命令是顺序执行的,从前往后执行

    dir z: & dir y: & dir c: 当第一个命令执行失败了,也不影响后边的命令执行
    dir z: && dir y: && dir c: 第一个命令失败时,后边的命令也不会执行
    在dos下的copy a.txt b.txt /y 相当于将a.txt复制一份存为b.txt不加/y时如果原来存在b.txt会提示是否覆盖b.txt的提示 还是得按y表示yes

     

    8、||这个命令的用法和&&几乎一样,但作用刚好相反:利用||执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行后面的命令

     

    9、知道别人主机的ip想知道其mac地址 用arp -a ip其实 nbtstat也可以看出来其mac地址nbtstat -A ip这个命令是用来查计算机名的(可以再电脑属性更改的实名制名字)。
    (1)netstat命令是显示协议统计信息和当前tcp/ip网络连接的 加上-o后会多显示一列即跟端口号对应的PID
    (2)tasklist /V 显示的是进程名、端口号、内存使用、用户名等具体信息。所以可以从netstat中找到pid然后用该pid在tasklist中找到进程名。
    (3)删除某个进程:命令格式:ntsd -c q -p pid 按进程号杀;ntsd -c q -pn ***.exe 按进程名杀;taskkill /pid pid /f 按进程号杀。其中/f是强行杀掉的意思。

     

    10、IF命令
    (1)IF [NOT] ERRORLEVEL number command 当errorlevel为0时说明上一句命令的执行结果是正确的。
    有的资料上说 这种写法指errorlevel >= 0时执行命令 若要等于0才执行则用if %errorlevel% == 0 (do something)

    (2)IF [NOT] string1==string2 command
    当比较string1和string2时如果不想区分大小写那么就在if 后面加个/i

    (3)IF [NOT] EXIST filename command
    if中还有一些判断数字大小的符号
    EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于
    我觉得还是直接用大于小于号方便。。。

    (4)对于if else语句得按下列格式
    IF EXIST filename (
    del filename
    ) ELSE (
    echo filename missing
    )
    这个例子里面有两点必须遵守<1>左括号必须和if或者else在同一行。不然会报语法不正确的提示
    <2>else 必须和if中的最后一句在一行。。不然会报else不是内部或外部命令的提示。

     

    11、date 显示当前日期,提示输入新日期。如果只想看当前日期不想输入新日期。可以 加个/t和time的用法一样
    time /t 只显示当前时间而不提示输入新时间


    12、sort排序命令可以排文件可以排命令结果,一个是用 < 从文件读,一个是用|排序前面命令的结果
    例sort < list.txt > alphlist.txt find "Jones" maillst.txt | sort
    sort输出排序结果到文件中可以利用/o后面加文件 而不用重定向

     

    13、more命令:可以直接单独用也可以在管道符后面用来一屏屏显示命令结果
    more后面带/s参数表示把多个空行输出成一个空行
    more 后面的文件可以是多个按空格分开,它会一个文件接一个文件的显示
    当使用more后会出来——More——这时要是输入=号就会显示现在显示到第多少行了.按q会退出.按F会从下一个文件开始显示.最基本的是空格显示下一屏,回车显示下一行

     

    14、find命令:
    find [/v] [/c] [/n] "string" [[drive:][path]filename[...]] 省略号表示可以在多个文件中查找
    参数
    /v 显示未包含指定字符串的所有行。
    /c 只显示包含指定字符串的行数。
    /n 将文件行号置于每行开头。
    /I 指定搜索不区分大小写。

     

    15、批处理的注释:有两种
    (1)rem 后面跟的是程序的注释命令.
    (2)::也可以用作注释,其实如果一个后面紧跟字母或者数字则是用于goto语句跳转的地方,所以:后面跟非字母或数字都可以用作注释。

    16、echo和@
    其中的echo off 和命令前加@,这俩命令如果在cmd窗口中输就看不出来效果,只能看出来前面的盘符路径>不见了全是黑屏了。所以只有在bat文件中用上这俩命令才能看出来效果,因为在执行bat文件时,每一句命令都会先显示在cmd窗口中然后再出来结果,所以这个时候echo off 或者前面加@就可以看出来只显示执行结果而没有命令显示。
    echo off 将以后的命令屏蔽显示,但它自身无法屏蔽,所以通常在echo off前面要加一个@

     

    17、PAUSE暂停键相当于c++里面的#include<stdlib> system(pause);
    运行显示:
    请按任意键继续. . .


    18、title 用来修改cmd窗口的名字。比如title houjiao 那个黑框的左上角名字就成houjiao了

     

    19、COLOR 后面由两个连着的十六进制数字构成。第一个十六进制表示cmd窗口的背景颜色,第二个十六进制表示cmd窗口中
    0到7是由黑色、蓝色、绿色、湖蓝、红色、紫色、黄色、白色
    8到F是对应的上述颜色的淡色版

     

    20、set这个命令不仅可以设置环境变量还可以设置自定义变量,还可以进行字符串处理是个硬角色。

    (1)set的用法SET [variable=[string]] 或者SET /P variable=[promptString]其中/p指的是promptstring是提示符而不是真正bariable的值。真正的值是需要用户下来输入的。跟scanf的作用一样。那怎么样设置一个变量用来进行表达式计算呢?用set /A variable+=1(相当于variable=variable+1) 这时会把等于号后面的当表达式而不是字符串。当定义变量后如果要用该变量则需要用%%将变量名夹在中间。
    当用/a时 如果等于号后面的是逻辑运算比如&时那不能直接用1&1而应该给&加上双引号。上面的用法可以用一个例子表示set /p hj=please input expression 按回车后 输入1"&"1 按回车后 set /a result=%hj% 再按回车。。就会看到结果。

    (2)用set处理字符串:
    <1>首先可以进行字符串替换 例如先初始化一个变量a:set a= bbs. verybat. cn
    将a中的空格删掉 则可以set %a: =%就行了,解释一下%a:str1=str2%就是把变量%a%的里的str1全部用str2替换.

    <2>其次可以进行字符串截断 例如先初始化一个变量b:set b=bbs.verybat.cn字符串截断的全部用法为下面5种可以将~当做截断字符串的标志:
    %b:~1,2% =“bs” 偏移量1,从第二位开始向右取2 位
    %b:~-3% =“.cn” 从倒数第三位往后取完。
    %b:~3% =“.verybat.cn” 从正数第三位往后取完。(只有一个参数说明后面的参数默认为取到结尾)
    %b:~0,-3% =“bbs.verybat” 从开始取到倒数第三个。
    %b:~2,-3% =“s.verybat” 偏移为2,从第三个开始取到倒数第三个。

     

    21、变量延迟
    假设有这么个bat
    @echo off
    set a=4
    set a=5 & echo %a%
    pause
    那么结果是4。。。而不是五。这就是变量延迟。指的是变量的值只从该一行命令上面的赋值得来。
    至于为什么我也不知道。。所以这时候需要启用变量延迟,固定的命令是这么写的setlocal enabledelayedexpansion要结束变量延迟则用 endlocal就可以。

     

    22、各种符号
    其中逗号、分号都是和空格的作用一样,没事就别用这些了空格就够了我觉得,而感叹号是在变量延迟问题中用来包变量的。即把%a%写成!a!可是我在开启变量延迟之后还是用的%a%也没有错,
    反而!a!报错。。不知道为啥了反正以后都用百分号就行了。
    小括号中的命令会被看成是一条命令。可以在for语句和if语句中使用也可以单独使用。
    双引号是字符串界定符加上双引号字符串中就可以加空格之类的。

     

    23、for循环

    格式:FOR 参数 %%变量名 IN (SET) DO 执行的命令
    其中SET指的是相关文件或命令命令用单引号括起来,相关文件用字符串括起来。
    for的参数有4个分别为/d /r /l /f
    (1)/d 参数:在SET中有通配符*或?时,只是循环执行SET中的文件夹名字而不会执行文件夹中的文件。

    (2)/r 参数:这个参数后面得加目录,同样当SET中有通配符时他会把/r 后面指定的目录及其下面的所有子目录中与set相符合的所有文件名都列举出来。但是/r 在set中没有通配符时还会做操作就是将所有含有该文件的目录都列出来。例如for /r c: %%i in (*.exe) do echo %%i

    (3)/l参数:其中的SET就需要换成三个用逗号隔开的数字分别代表start,step,end。表示从数字start开始到end结束步长为step来设置变量。比如for /l %%i in (1,1,5) do start cmd就会打开5个cmd窗口。

    (4)/f参数:这个参数是读取文件中最常用的一个也是最复杂的一个
    FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]其中file-set是文件名不能有空格
    FOR /F ["options"] %variable IN ("string") DO command [command-parameters]其中string表示字符串
    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]单引号表示执行命令

    option有5个参数用一个例子来说明就是
    FOR /F "usebackq eol=; tokens=1,3* delims=, " %%i in ("program files") do echo %%i %%j %%k
    其中usebackq参数表示后面双引号引的是文件名而不是字符串。
    eol=;表示跳过以分号开头的行不读。
    tokens=1,3* 表示按照后面的逗号和空格将一行分为若干段,将第一段赋值给%%i,将第三段赋值给%%j,将后面所有的段赋值给%%k。
    delims=, 表示按,和 分割行,其中的空格必须放在最后,否则会报错。那个*还可以写成4-10意思是第四段到第十段。

    在for中变量可以替换为一些其他的写法,作用也不一样,具体的for /? 然后再最后面一屏会看到。经常用的是俩%~dpi其中i是for本来的变量。意思是将%i扩充到一个驱动器号和路径。如果原来%i是一个文件,则你echo 后就会显示哪个盘哪个目录下的文件。

     后续学到其他的再进行总结补充。                                                                                                                    -jimmy-hou-

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/tears-of-ramos/p/3401499.html
Copyright © 2011-2022 走看看