Windows批处理文件bat/cmd

1、@echo off

        通常我们将这条指令写在我们批处理文件的第一行,因为有了这条指令之后,当我们在运行.bat的时候,就不会将文件里面的内容打印出来了,如果没有这句话,会先去将文件里面的内容打印在屏幕上,通常我们是不希望使用者了解里面的代码结构的.

2、@ 命令

     表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
Sample:@echo off

     如果只写echo off的话,是这句话后面的命令不显示了,这句话本身还是会显示的,所以我们用@echo off, 这句话也不显示了

3、pause命令——暂停

      pause在指令中的作用是暂停,当我们需要在文件运行的中间让其暂停一下,看一下我们的输出,就会使用PAUSE命令,然后在控制台就会显示:“请按任意键以继续”,当我们按下任意键之后,文件就会继续运行了,当我们希望在屏幕上显示自己的语句的时候,可以这样写:

@echo off
echo "hello world"
pause
echo "yes"

4、set命令——设置变量

set a=1
set string1=abcdefg

       使用set命令,我们可以设置变量,其中“a”和“string1”就是我们设置的变量,可以直接给设置的变量赋值。

当我们希望将设置的变量显示在屏幕的时候,需要在变量的前后带上“%”,然后使用echo命令将设置的变量进行回显。

echo %a%
echo %string1%

       当我们需要输出空行的时候,使用“echo.”,其中“.”必须紧跟在echo命令的后面,而且“.”也可以被,:;”/等任一的符号代替,这样我们就会输出一个空行,相当于敲了一个回车。

扫描二维码关注公众号,回复: 10950385 查看本文章

 

5、REM 和 ::

这两条指令的作用是帮助我们进行指令的注释,类似于C++中的:“/**/”和“//”

REM set a=1
::set string1=abcdefg

6、call指令

在某一批处理程序中调用另外一个批处理文件,就是用call指令

echo off
call E:\Temp.bat
echo this is Zzzmain.bat
pause

7、%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*     命令行传递给批处理的参数

%0 批处理文件本身,包括完整的路径

%1 第一个参数

%9 第九个参数

%* 代表全部参数

8、 >重定向符

>>重定向符

echo "hello world" >> 1.txt

> 清除文件中原有的内容后再写入(如果文件不存在会新建)
>> 追加内容到文件末尾,而不会清除原有的内容(如果文件不存在会新建)

9、<      从文件中获得输入信息,而不是从屏幕上

一般用于 date time label 等需要等待输入的命令

    @echo off
    echo 2005-05-01>temp.txt
    date <temp.txt
    del temp.txt

这样就可以不等待输入直接修改当前日期


10、>nul  和  nul 2>nul

      这个">nul 2>nul"可以屏蔽一切屏幕的输出可以这样理解:

     假如执行一个命令,但是不想在屏幕里看到这个命令的执行情况,可以使用"[命令]>nul"就可以屏蔽命令在屏幕上的输出,但是有的命令执行会出错,即使用了">nul"也不能屏蔽命令产生的信息,所以就在后面加" 2>nul"这个,就是"[命令]>nul+空格+2>nul",这样,不管命令是否正确的运行,都不会在屏幕看到这个命令所产生的屏幕显示了。

10、 | 命令管道符

将第一条命令的结果当作第二条命令的参数使用

dir c:\ | find "txt"

在c盘目录下查找txt文件

find将dir c:\的结果当作参数使用

11、

&
顺序执行多条命令,而不管命令是否执行成功
 
&&
顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
find "ok" c:test.txt && echo 成功
如果找到了"ok"字样,就显示"成功",找不到就不显示
 
 ||
顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
find "ok" c:test.txt || echo 不成功
 

12、if 语句

if "%1"=="/a" echo 第一个参数是/a


if /i "%1" equ "/a" echo 第一个参数是/a
/i 表示不区分大小写,equ 和 == 是一样的,其它运算符参见 if/?


if exist c:test.bat echo 存在c:test.bat文件


if not exist c:windows (
     echo 不存在c:windows文件夹
     )


if exist c:test.bat (
     echo 存在c:test.bat
     ) else (
     echo 不存在c:test.bat
     )

13、for循环

for %%i in (c: d: e: f:) do echo %%i
依次调用小括号里的每个字符串,执行 do 后面的命令
注意%%i,在批处理中 for 语句调用参数用2个%
默认的字符串分隔符是"空格键","Tab键","回车键"


for %%i in (*.txt) do find "abc" %%i
对当前目录里所有的txt文件执行 find 命令

发布了487 篇原创文章 · 获赞 197 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/hxxjxw/article/details/105478336