批处理各符号的功能1.(新)

批处理各符号的功能1.(新)
批处理各符号的功能1.(新)

批处理各符号的功能1.

echo有两个状态一个是on 一个是off默认的是on 它的功能是显示当前文件的路径,如果不写on 或者是off的时候,默认情况下

是打开的即显当前文件的路径,加上off后,所有路径都不显示,但是echo off这行还能显出来,要让这行也消失的话就在它们前面

加一个@即@echo off,另外echo命令的另一种用法,可以直接编辑文本文件,例如:

echo netstat -an >a.bat结晶果是在当前目录下生成一个a.bat的文件,双击直接执行这个文件时,就会执行netstat -an这个命令

2.

> 这个字符的意思是将">"前面的内容传递并且覆盖">"后面的内容,它所起的作用是将运行的回显结果传递到后面的范围.

例如:ipconfig.txt中的内容是1113333,执行ipconfig /all >ipconfig.txt即将ipconfig /all的内容覆盖原有的1113333。与这个

符号相似的还有>>它的功能不是覆盖而追加,即将运行后的内容加到原来的1113333后。

3.

| 这是一个管道传输命令,意思是将上一命令执行的结果传到下一个命令去处理

例如:

dir c:\|find "txt"

以上命令是:查找C:\所有,并发现TXT字符串。

||

Usage:第一条命令|| 第二条命令[|| 第三条命令...]

用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令

;(只要正确后面的就不执行)

4.

^ 是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊

意义。

例如:

C:\>echo ipconfig.txt ^>ipconfig

结果为:ipconfig.txt >ipconfig没有追加只是显示出来而已

5.

& 这个符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行

例如:C:\>dir d:/p & dir e: /p & dir c: /p

结果是先后执行

6.

&& 这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行

例如:C:\>dir w:/p && dir e: /p && dir c: /p 由于电脑上没有w盘所以显示结果为:系统找不到指定的路径。这样以来,后面的

两个盘就不执行啦。(当第n个命令失败时此命令后面的命令将不再执行,也就是说一直执行到失败为止)

7.

"" 双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法

cd "program files"

cd progra~1

cd pro*

以上三种方法都可以进入program files这个目录

8.

, 逗号相当于空格,在某些情况下“,”可以用来当做空格使

比如

dir,c:\

9.

; 分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序还是

会执行。

比如:

dir c:\;d:\e:\;f:\

以上命令相当于

dir c:\

dir d:\

dir e:\

dir f:\

但是前面执行的盘不存在的话,后面的命令将不会执行。

例如:C:\>dir w:;d: /p;e: /p

结果为:系统找不到指定的路径。

10.在echo的后面加一个点,所起到的作用是显示一空行。

以下范例显示的批处理程序包含前后各有一个空行的三行消息:

@echo off

echo.

echo This batch program

echo formats and checks

echo new disks

echo.

如果想让打开的批处理命令的标题栏有名字的话可以用到title这个参数

title filename

">nul 2>nul"可以屏蔽一切屏幕的输出,例如:dir >nul 2>nul这样屏幕上什么都不会输出,也就是没有结果。

1>nul 表示将正确执行目录树的信息禁止输出,2>nul 表示将执行过程中的错误信息禁止输出。

断开网络连接方法有两种:一种是rasphone /h adsl,另一种是rasdial adsl /d

11.goto一般和:是联用的goto跳转的地方入口就是":"。goto命令的另一种用法一:提前结束程序。在程序中间使用goto命令跳转到

某一标签,而这一标签的内容却定义为退出。如:

……

goto end

……

:end

dir中有些命令是要牢记的

dir d: /s /p /b (/a这后面还有一些参数像h,r,d,s/d)具体的可以看帮助

%userprofile%在写批处理时这个相当于C:\Documents and Settings\Administrator

在结束关键进程的时候,要先结束explorer.exe这个进程,最好用系统自带的工具taskkill 这个关explorer.exe的时候任何杀毒软件

都没有提示,但是如果换成了用ntsd关的话,卡巴斯基会报毒,而且这时的explorer会在关闭的一下后马上自启动,而taskkill就会

一直关着直到等你开启为止。

在使用for 的时候当用到/d时,那是因为set中有* ?这两个通配符

shift

1.可替代参数的编号是%o-%9,如果要在一个命令行上使用超过10个可以被代换的参数,则可使用SHIFT命令来突破此限制。

2.每当执行sHIFT一次,命令行上的所有参数将向左移动一位。%1的内容将为%2的内容所取代…,%9内容则由新的参数取代。

3.%o表示批处理文件本身的名称,永远不变,所以每次执行时可以在批处理文件使用一次shift就向右移动一位,例如:

a.bat的内容:

@echo %1 %2 %3 %4 %5 %6 %7 %8 %9

shift

@echo %1 %2 %3 %4 %5 %6 %7 %8 %9

shift

@echo %1 %2 %3 %4 %5 %6 %7 %8 %9

pause

运行

c:\>a 1 2 3 4 5 6 7 8 9 10 11(其后有11个参数)

1 2 3 4 5 6 7 8 9 (取到最前面9个参数)

c:\>shift (移位)

2 3 4 5 6 7 8 9 10 11(取到另外9个参数)

c:\>shift (移位)

3 4 5 6 7 8 9 10 (取到另外9个参数)

在批处理中del /f /s /q可以删除指定目录下的任何文件,但是不能删除文件夹,rd /s /q不但

可以删除指定目录下的文件夹而且还

可以删除目录下的所有文件,以前总是以为rd只能删除文件夹,现在才知道用这个命令还以删除文件夹

@echo off @echo off

:top :top

if (%1)==() goto end if (%1)==()goto end

shift shift

echo still running echo still running

goto top goto top

:end :end

看到了吧!两个程序就是第三行的goto前面不一样,第一个有一个空格,而第二个没有,就是这个空格所产生的结果就不一样,第一

个结果是三行still running,而第二个结果是一个无限制的循环,一直不停的显示still running,所以写程序的时候一定要注意

errorlevel

若一个程序或DOS命令执行成功,则返回的E只RORLEVEL的值为o,否则为1至255之间AscII值的任意整数,其值只占一个字节约内存

空间,值得注意的是IF语句中检验的ERRORLEVEL值是大于或等于而不是等于,例如语句IF ERRORLEVEL 5检验的是ERRORLEVEL>=5而

不是ERRORLEVEL=5,因此对于5至255之间的任何整数,此语句检验结果都是真值。

在变量延迟时要用到setlocal EnableDelayedExpansion

例如:

@echo off

setlocal EnableDelayedExpansion

.......

然后写要用的代码

需要注意的是,一旦启用了变量延迟,就要用!号把变量括起来,而不能用%号。

echo !n!

显示变量n的值

例如:

@echo off &SETLOCAL ENABLEDELAYEDEXPANSION

set mm=gril&echo !mm!

pause

ping 在批处理中有延时的作用,开始的时候不知道怎么用,后来才发现,每ping一次的时间是一秒,所以写成ping /n 10 127.1或者

是ping /n 10 localhost效果是一样的,都能起来延时十秒的作用

set

SET /A expression

环境变量替换已如下增强:

%PATH:str1=str2%

%PATH:~10,5%

%PATH:~-10%

%PATH:~0,-2%

%PATH:str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换

例如:

@echo off

set a= https://www.360docs.net/doc/4a10015350.html,

echo 替换前的值: "%a%"

set var=%a: =qq%

echo 替换后的值: "%var%"

pause

结果是:替换前的值: " https://www.360docs.net/doc/4a10015350.html," 很明显吧,那个空格被qq给代替啦^-^

替换后的值: "https://www.360docs.net/doc/4a10015350.html,"

请按任意键继续. . .

@echo off

set a=https://www.360docs.net/doc/4a10015350.html,

echo 替换前的值: "%a%"

set var=%a:.=伤脑筋%

echo 替换后的值: "%var%"

pause

解释set var=%a:.=伤脑筋%

set命令var变量名字a是要进行字符替换的变量的值,"."为要替换的值,

"伤脑筋"为替换后的值!

执行后就会把变量%a%里面的"."全部替换为"伤脑筋"

这就是set的替换字符的很好的功能!先讲到这

%PATH:~10,5%

@echo off

set a=https://www.360docs.net/doc/4a10015350.html,

set var=%a:~1,2%

echo %var%

pause

执行后,我们会发现只显示了"bs"两个字母,我们的变量%a%的值不是为https://www.360docs.net/doc/4a10015350.html,吗

怎么只显示了第2个字母和第3个字母"bs",分析一结果我们就可以很容易看出

%PATH:~10,5%就是显示变量PA TH里指定几位的值!

分析set var=%a:~1,2%

set命令var变量值a要进行字符操作的变量"1"从变量"a"第几位下一位开始显示"2"显示几位

和起来就是把变量a的值从第一位开始,把后两位赋予给变量var

%PATH:~-10% 例子

@echo off

set a=https://www.360docs.net/doc/4a10015350.html,

set var=%a:~-3%

echo %var%

pause

这个的意思是从右往左取三位,把取到的部分给了var ,如果把负号去掉,就成了从左往右去掉三位把剩下的部分给了var

%PATH:~0,-2% 例子

@echo off

set a=https://www.360docs.net/doc/4a10015350.html,

set var=%a:~4,-3%

echo %var%

pause

结果是verybat,这段代码的意思是,从右去掉三位,把左剩余的部分,从第四位的下一位开始显示,把显示的内容给了var

如果改成set var=%a:~3,-3%结果就是.verybat

延迟和set的综合应用:

@echo off

setlocal enabledelayedexpansion

title I Love Greatwall

set love=I Love Greatwall Forever

for /l %%i in (1,1,24) do (cls

echo. !love:~0,%%i!

ping/n 1 127.1>nul 2>nul)

pause

我觉得这段代码很意思,do里面的命令主要是分三块但是这三块不能在同一行,分三行写.因为它们是不同的命令,要想写在一行的

话要加&,写好后为for /l %%i in (1,1,24) do (cls &echo. !love:~0,%%i! &ping/n 1 127.1>nul 2>nul)

for

在DOs提示符下可直接使用FOR语句,用法的区别在于必须把%%variable写成%variable

关于FOR语句的使用方法,归纳如下:

(1)为了在各种DOS版本下都能运行,%%vart6le的变量必须为单个字符,应避

免使用%%o一%%9作为变量。

(2)FOR%%variaNeIN tnle s就)command%%variable其中File set必须放在

括号内,文件的个数没有限制,只要不超过D05命令行127个字符的限制即可,文件之

间用空格或逗号作为分隔符分开,文件名可以使用通配符。

(3)FoR语句中后面的变量有时可省略,如:

FOR%%a IN(*.BAK)D0 DIR

(4)FOR语句的结尾如果执行另一个批处理程序,执行结束后,不再返回FOR语

FOR /D %%variable IN (set) DO command /D参数只能显示当前目录下的目录名字

@echo off

for /d %%i in (*) do @echo %%i

pause

把他保存放在C盘根目录执行,就会把C盘目录下的全部目录名字打印出来,而文件名字一个也不显示!

@echo off

for /d %%i in (???) do @echo %%i

pause

这样的话如果你当前目录下有目录名字只有1-3个字母的,就会显示出来,没有就不显示了

这里解释下*号和?号的作用,*号表示任意N个字符,而?号只表示任意一个字符

FOR /R [[drive:]path] %%variable IN (set) DO command

它可以把当前或者你指定路径下的文件名字全部读取,注意是文件名字

@echo off

for /r c:\ %%i in (*.exe) do @echo %%i

pause

把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了

@echo off

for /r %%i in (*.exe) do @echo %%i

pause

以当前目录为搜索路径,显示当前目录的全部EXE文件列出来!

for /L %% Variable in (Start#,Step#,End#) do Command

@echo off

for /l %%i in (1,1,5) do start cmd

pause

看上面的start step end就知道是什么意思了吧,开始,结束,步阶,按一步一个的话,就会总有六个cmd跳出来五个

设置默认的控制台前景和背景颜色。

for /F "ParsingKeywords" %% Variable in (FileNameSet) do Command

"ParsingKeywords"

它表示4个参数

eol=c - 指一个行注释字符的结尾(就一个)

skip=n - 指在文件开始时忽略的行数。

delims=xxx - 指分隔符集。这个替换了空格和跳格键的

默认分隔符集。

tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代

的for 本身。这会导致额外变量名称的分配。m-n

格式为一个范围。通过nth 符号指定mth。如果

符号字符串中的最后一个字符星号,

那么额外的变量将在最后一个符号解析之后

分配并接受行的保留文本。

usebackq - 指定新语法已在下类情况中使用:

在作为命令执行一个后引号的字符串并且一个单

引号字符为文字字符串命令并允许在filenameset

中使用双引号扩起文件名称。

例如:新建一个文件名字为test.txt

内容为:

;哈哈

你好!相信自己一定会成功……

Never Say Die

好啦就这样吧

@echo off

FOR /F "eol=; tokens=1 delims= " %%i in (test.txt) do @echo %%i

pause

你好!相信自己一定会成功……

Never

好啦就这样吧

这个命令会读取在当前目录下名为test.txt文件中的内容,然后将每一行的内容赋值给变量%%i,然后忽略掉以;号开头的行,并且以空

格做为分隔符号,打印第每行以空各做分隔符号的第一列

又例如:

@echo off

for /f "tokens=3 delims=- " %%a in ('date /t') do @echo %%a

pause

date /t的结果是:2007-08-22 星期三

所以批处理的结果为:22

@echo off

for /f "tokens=2,3,4 delims=-" %%a in ('date /t') do @echo %%c-%%a-%%b

pause

结果为:-08-22 星期三

总结:以上两个的结果都是从date /t中以"-"为分隔符,从左往右依次取第三列(这就是第一

个的结果22),第二,三,四列(这就是

第二个的结果-08-22 星期三),这个for以后的用处还很大.

FOR的变量全部列出来:凡是%~ 开头的操作符,都是文件名的分离操作

~I - 删除任何引号("),扩展%I

这个变量的作用就如他的说明,删除引号!

我们来看这个例子:

首先我们在桌面建立一个名字为temp.txt文本文件,在里面输入这些内容

"1111

2222"

"3333"

44"44

然后在建立个BAT文件代码如下:

FOR /F "delims=" %%i IN (temp.txt) DO @echo %%~i

pause

执行后,我们看CMD的回显如下:

1111

2222"

3333

44"44

和之前temp.txt中的内容对比一下,我们会发现第一行和第三行的引号都消失了,这就是删除引号~i的作用了!

删除引号规则如下(BA T兄补充!)

1、若字符串首尾同时存在引号,则删除首尾的引号;

2、若字符串尾不存在引号,则删除字符串首的引号;

3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除

%~fI - 将%I 扩展到一个完全合格的路径名

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~fi

pause

执行后显示内容如下

C:\Documents and Settings\Administrator\桌面\test.bat

C:\Documents and Settings\Administrator\桌面\test.vbs

当我把代码中的%%~fi直接改成%%i

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%i

pause

执行后就会显示这些内容

test.bat

test.vbs

%~dI - 仅将%I 扩展到一个驱动器号

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di

pause

执行后我CMD里显示如下

C:

C:

%%~di作用是,如果变量%%i的内容是一个文件或者目录名,那么%%~di就会把%%i这文件或者目录所在的盘符号打印出来!

%~pI - 仅将%I 扩展到一个路径

这个用法和上面一样,他只打印路径不打印文件名字

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~pi

pause

\Documents and Settings\Administrator\桌面\

%~nI - 仅将%I 扩展到一个文件名

只打印文件名字

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ni

pause

test

%~xI - 仅将%I 扩展到一个文件扩展名

只打印文件的扩展名

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~xi

pause

.vbs

.bat

.txt

.txt

.txt

%~sI - 扩展的路径只含有短名

打印绝对短文件名

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~si pause

C:\DOCUME~1\ADMINI~1\桌面\a.vbs

C:\DOCUME~1\ADMINI~1\桌面\a2.bat

C:\DOCUME~1\ADMINI~1\桌面\q.txt

C:\DOCUME~1\ADMINI~1\桌面\test.txt

C:\DOCUME~1\ADMINI~1\桌面\_讨论_~1.TXT

C:\DOCUME~1\ADMINI~1\桌面\常用工具

%~aI - 将%I 扩展到文件的文件属性

打印文件的属性

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ai pause

--a------

--a------

--a------

--a------

--a------

dr-------

%~tI - 将%I 扩展到文件的日期/时间

打印文件建立的日期

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~ti pause

2007-08-21 12:30

2007-08-22 18:40

2007-08-22 12:31

2007-08-22 17:58

2007-08-19 23:23

2007-08-16 14:28

%~zI - 将%I 扩展到文件的大小

打印文件的大小

FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~zi

pause

76

439

558

64

34614

最后一个不是个文件而是一个文件夹,所以显示为0,其实不为0的

%~$PATH:I - 查找列在路径环境变量的目录,并将%I 扩展

到找到的第一个完全合格的名称。如果环境变量名

未被定义,或者没有找到文件,此组合键会扩展到

空字符串

我们先在桌面建立一个temp.txt文件,里面写上这些内容

c:\windows

c:\windows\system32

c:\windows\teett

然后在把这些代码保存为批处理,放在桌面.

FOR /F "delims==" %%i IN (temp.txt) DO @echo %%~$PATH:i

pause

执行后CMD显示如下内容

c:\WINDOWS

c:\WINDOWS\system32

ECHO 处于打开状态。

为什么会这样呢,还有一行c:\windows\teett呢?

我们直接在CMD里输入echo %path% 会显示C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem

%%~$PA TH:i也就是在文本里寻找匹配这个PATH变量值的内容,如果里面的内容和PATH变量相同,就打印出来

如果不相同,就显示一个空行!

COLOR [attr]

attr 指定控制台输出的颜色属性

颜色属性由两个十六进制数字指定-- 第一个为背景,第二个则为

前景。每个数字可以为以下任何值之一:

0 = 黑色8 = 灰色

1 = 蓝色9 = 淡蓝色

2 = 绿色A = 淡绿色

3 = 湖蓝色B = 淡浅绿色

4 = 红色C = 淡红色

5 = 紫色D = 淡紫色

6 = 黄色E = 淡黄色

7 = 白色F = 亮白色

如果没有给定任何参数,该命令会将颜色还原到CMD.EXE 启动时的颜色。这个值来自当前控制台窗口、/T 开关或

DefaultColor 注册表值。

如果用相同的前景和背景颜色来执行COLOR 命令,COLOR 命令echo test>test\x.txt 这句的意思是在test文件夹下往x.txt中写入test FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

/V 显示所有未包含指定字符串的行。

/C 仅显示包含字符串的行数。

/N 显示行号。

/I 搜索字符串时忽略大小写。

/OFF[LINE] 不要跳过具有脱机属性集的文件。

"string" 指定要搜索的文字串,

[drive:][path]filename

指定要搜索的文件。

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data]

KeyName [\\Machine\]FullKey

远程机器的机器名- 忽略默认到当前机器。

远程机器上只有HKLM 和HKU。

FullKey ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选ROOTKEY 下注册表项的完整名

/v 所选项之下要添加的值名

/ve 为注册表项添加空白值名<无名称>

/t RegKey 数据类型

[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |

REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |

REG_NONE | REG_EXPAND_SZ ]

如果忽略,则采用REG_SZ

/s 指定一个在REG_MULTI_SZ 数据字符串中

用作分隔符的字符

如果忽略,则将"\0" 用作分隔符

/d 要分配给添加的注册表ValueName 的数据

/f 不用提示就强行改写现有注册表项

例如:

REG ADD \\ABC\HKLM\Software\MyCo

添加远程机器ABC 上的一个注册表项HKLM\Software\MyCo

REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead

添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)

REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail

添加一个值(名称: MRU,类型: REG_MUTLI_SZ,数据: fax\0mail\0\0)

REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%

添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%)

注意: 在扩充字符串中使用双百分比符号( %% )

设置屏幕每行显示字符数和每屏的行数例如∶MODE CONt COLS=80LINES=25 如果要在批处理中生成一个空的文本文件可以这样写

type nul>a.txt

find的参数:

/C 仅显示包含字符串的行数。

/N 显示行号。

/I 搜索字符串时忽略大小写。

这三个是常用的

if和else必须在一行之上,比较运算符有

大于gtr

大于等于geq

等于equ或者==

小于等于leq

小于lss

else和if必须在一行之上,如果有else部分的话,else前面的command部分必须用()括起来。FINDSTR正则表达式的基本用法

1.findstr .

2.txt 或Findstr "." 2.txt

从文件2.txt中查找任意字符,不包括空字符或空行

====================

2.findstr .* 2.txt 或findstr ".*" 2.txt

从文件2.txt中查找任意字符包括空行和空字符

====================

3.findstr "[0-9]" 2.txt

从文件2.txt中查找包括数字0-9的字符串或行

====================

4.findstr "[a-zA-Z]" 2.txt

从文件2.txt中查找包括任意字符的字符串或行

====================

5.findstr "[abcezy]" 2.txt

从文件2.txt中查找包括a b c e z y字母的字符串或行

====================

6.findstr "[a-fl-z]" 2.txt

从文件2.txt中查找小写字符a-f l-z的字符串,但不包含g h I j k这几个字母。

====================

7.findstr "M[abc][hig]Y" 2.txt

从文件2.txt中可以匹配MahY , MbiY, MahY等…..

====================

8. ^和$符号的应用

^ 表示行首,"^step"仅匹配"step hello world"中的第一个单词

$ 表示行尾,"step$"仅匹配"hello world step"中最后一个单词

====================

9.finstr "[^0-9]" 2.txt

如果是纯数字的字符串或者行便过滤掉,例如2323423423 这样的字符串,如果是345hh888这样的形式就不成了。

====================

10.findstr "[^a-z]" 2.txt

同上,如果是纯字母的字符串或者行便过滤掉,例如sdlfjlkjlksjdklfjlskdf这样的字符,如果是sdfksjdkf99999这样的形式,掺

杂着数字就不成了

====================

11.*号的作用

前面已经说过了".*"表示搜索的条件是任意字符,*号在正则表达式中的作用不是任何字符,而是表示左侧字符或者表达式的重复次

数,*号表示重复的次数为零次或者多次。

====================

12.findstr "^[0-9]*$" 2.txt

这个是匹配找到的纯数字,例如234234234234,如果是2133234kkjl234就被过滤掉了。Findstr "^[a-z]*$" 2.txt

这个是匹配找到的纯字母,例如sdfsdfsdfsdf,如果是213sldjfkljsdlk就被过滤掉了

如果在搜索条件里没有*号,也就是说不重复左侧的搜索条件,也就是[0-9] [a-z]那只能匹配字符串的第一个字符也只有这一个字符

,因为有行首和行尾的限制,"^[0-9]$"第一个字符如果是数字就匹配,如果不是就过滤掉,如果字符串是9 就匹配,如果是98或者

9j之类的就不可以了。

=====================

13. "\<…\>"这个表达式的作用

这个表示精确查找一个字符串,\表示字的结束位置

echo hello world computer|findstr "\"这样的形式

echo hello worldcomputer|findstr "\" 这样的形式就不成了,他要找的是"computer"这个字符串,所以不可以。

echo hello worldcomputer|findstr ".*computer\>"这样就可以匹配了

所学知识的应用:

@echo off

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 该休息啦.bat /t reg_sz >nul

@echo off

:start

for /f "delims=: tokens=2" %%i in ('systeminfo ^| findstr "系统启动时间"') do set a=%%i

set var=%a:~2,1%

if var geq 2 (goto alert) else goto start

:alert

echo msgbox "该休息啦">alert.vbs

call alert

del /f/q alert.vbs,time.txt

pause

这个是我自己写的,其实也没有什么用就是把自己的东西串一下,从这段代码中我学到了不少东西,在if的时候一定记得要在else前

的command加括号,还有就是^的使用,看看上面,它就是显示它后面的符号,使它们失去功能,还有好多,呵呵,都在程序里啦。

还有就是pan断大小的使用

其中,比较运算符可以是:

equ - 等于

neq - 不等于

lss - 小于

leq - 小于或等于

gtr - 大于

geq - 大于或等于

在一行上写上三个echo.相当于空三行echo.&echo.&echo.这是正确的格式,就是空三行

SET /P verybat= 请选择要进行的操作:

IF /I "%verybat:~0,1%"=="1" GOTO 1

IF /I "%verybat:~0,1%"=="2" GOTO 2

@echo off

echo 正在准备生成加密的jpg图片

echo 请将要加密的图片改名为1.jpg

echo 请将要密语保存为2.txt

echo 按任意键开始加密

pause

Copy 1.jpg/b + 2.txt/a 3.jpg

echo 加密结束

echo 程序将生成加密图片3.jpg

pause

以上是图片加密的代码,看看很简单的吧呵呵

用到了copy的参数

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]

[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source 指定要复制的文件。

/A 表示一个ASCII 文本文件。

/B 表示一个二进位文件。

/D 允许解密要创建的目标文件

destination 为新文件指定目录和/或文件名。

/V 验证新文件写入是否正确。

/N 复制带有非8dot3 名称的文件时,

尽可能使用短文件名。

/Y 不使用确认是否要改写现有目标文件

的提示。

/-Y 使用确认是否要改写现有目标文件

的提示。

/Z 用可重新启动模式复制已联网的文件。

命令行开关/Y 可以在COPYCMD 环境变量中预先设定。这可能会被命令行上的/-Y 替代。除非COPY

命令是在一个批文件脚本中执行的,默认值应为

在改写时进行提示。

要附加文件,请为目标指定一个文件,为源指定

数个文件(用通配符或file1+file2+file3 格式)。

Linux符号说明

批处理各符号的功能: 1. echo有两个状态一个是on 一个是off默认的是on 它的功能是显示当前文件的路径,如果不写on 或者是off的时候,默认情况下 是打开的即显当前文件的路径,加上off后,所有路径都不显示,但是echo off 这行还能显出来,要让这行也消失的话就在它们前面 加一个@即@echo off,另外echo命令的另一种用法,可以直接编辑文本文件,例如: echo netstat -an >a.bat结晶果是在当前目录下生成一个a.bat的文件,双击直接执行这个文件时,就会执行netstat -an这个命令。 2. > 这个字符的意思是将">"前面的内容传递并且覆盖">"后面的内容,它所起的作用是将运行的回显结果传递到后面的范围. 例如:ipconfig.txt中的内容是1113333,执行ipconfig /all >ipconfig.txt 即将ipconfig /all的内容覆盖原有的1113333。与这个 符号相似的还有>>它的功能不是覆盖而追加,即将运行后的内容加到原来的1113333后。 3. | 这是一个管道传输命令,意思是将上一命令执行的结果传到下一个命令去处理例如: dir c:\|find "txt" 以上命令是:查找C:\所有,并发现TXT字符串。 || Usage:第一条命令 || 第二条命令 [|| 第三条命令...] 用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令 ;(只要正确后面的就不执行) 4. ^ 是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊 意义。 例如: C:\>echo ipconfig.txt ^>ipconfig

Linux特殊符号大全

Linux特殊符号大全 在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $ $$ $* "string"* ** : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != ? # 井号(comments) 这几乎是个满场都有的符号,除了先前已经提过的"第一行" #!/bin/bash 井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。 # This line is comments. echo "a = $a" # a = 0 由于这个特性,当临时不想执行某行指令时,只需在该行开头加上# 就行了。这常用在撰写过程中。 #echo "a = $a" # a = 0 如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

~ 帐户的home 目录 算是个常见的符号,代表使用者的home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user或者当成是路径的一部份:~/bin ~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令pwd的作用是相同的。# echo ~+/var/log ~- 上次的工作目录,这个符号代表上次的工作目录。 # echo ~-/etc/httpd/logs ; 分号(Command separator) 在shell 中,担任"连续指令"功能的符号就是"分号"。譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/. ;; 连续分号(Terminator) 专用在case 的选项,担任Terminator 的角色。 case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version " ;;esac . 逗号(dot,就是“点”) 在shell 中,使用者应该都清楚,一个dot 代表当前目录,两个dot 代表上层目录。CDPATH=.:~:/home:/home/web:/var:/usr/local

Linux常见特殊符号

Linux 常见特殊符号1,> 重定向输出符号 用法:命令 >文件名 特性:覆盖(当输入文件和输出文件是同一文件,文件内容被清空;不适合连续重定向) 典型应用:合并文件(cat a b >c);清空文件(cat /dev/null);文件打印 2,>> 重定向输出符号 用法:命令 >>文件名 特性:追加 3,2> 错误重定向输出符号 用法:命令 2>文件名 特性:覆盖 4,2>> 错误重定向输出符号 用法:命令 2>>文件名

特性:错误信息的追加 典型应用:命令 >文件名命令 2>文件名 命令 >/dev/null 2>/dev/null==命令 > /dev/null 5,|管道符号 用法:命令1 | 命令2 机制:上一个的命令输出作为下一个命令的输入 6, *匹配任意字符 7,?匹配任意一个字符 8,&后台进程符 用法:命令(程序) & 9,&& 逻辑与 用法:命令1 && 命令2 机制:如果命令1执行成功,继续执行命令2;否则不执行命令2

10,|| 逻辑或 用法:命令1 || 命令2 机制:如果命令1执行成功,不执行命令2;否则,才执行命令2 11,!逻辑非 机制:排除指定范围 12,[x-y]指定范围 13,#注释 14,""双引号 机制:把它所包含的内容作为普通字符,但‘’\ $ `` 除外 15‘’单引号 机制:把它所包含的内容作为普通字符,无例外16,``倒引号 机制:执行它所包含的内容

17,\转义字符 用法; \符号 机制:把符号的特定含义去掉,使其变成普通标点 符号 18,$变量调用符号 用法: $变量 机制:调用变量,从而得到‘变量的值’ 19,;命令分隔符 用法:命令1 ;命令2 机制;一行语句中,顺次执行各命令 20()整体执行 21,{ } 变量分离 22,<重定向输入符号 用法:命令 < 文件名

批处理基础知识

批处理文件基础知识 一、单符号message指定让MS-DOS在屏幕上显示的正文 ~ ①在for中表示使用增强的变量扩展。 ②在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。 ③在set/a中表示一元运算符,将操作数按位取反。 ! ①在set /a中一元运算符,表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。 @ ①隐藏命令行本身的回显,常用于批处理中。 % ①在set /a中的二元运算符,表示算术取余。 ②命令行环境下,在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标变量。 ③批处理中,后接一个数字表示引用本批处理当前执行时的指定的参数。 ④其它情况下,%将会被脱去(批处理)或保留(命令行) ^ ①取消特定字符的转义作用,比如& | > < ! "等,但不包括%。比如要在屏幕显示一些特殊的字符,比如> >> | ^ &等符号时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^|就是显示一个|字符了; ②在set/a中的二元运算符,表示按位异或。 ③在findstr/r的[]中表示不匹配指定的字符集。 & ①命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令。 ②在set/a中是按位与。 : ①标签定位符,表示其后的字符串为以标签,可以作为goto命令的作用对象。比如在批处理文件里面定义了一个":begin"标签,用"goto begin"命令就可以转到":begin"标签后面来执行批处理命令了。 ②在%var:string1=string2%中分隔变量名和被替换字串关系。 | ①管道符,就是将上一个命令的输出,作为下一个命令的输入."dir /a/b |more"就可以逐屏的显示dir命令所输出的信息。 ②在set/a中的二元运算符,表示按位或。 ③在帮助文档中表示其前后两个开关、选项或参数是二选一的。 / ①表示其后的字符(串)是命令的功能开关(选项)。比如"dir /s/b/a-d"表示"dir"命令指定的不同的参数。 ②在set/a中表示除法。 > ①命令重定向符,将其前面的命令的输出结果重新定向到其后面的设备中去,后面的设备中的内容被覆盖。比如可以用"dir > lxmxn.txt"将"dir"命令的结果输出到"lxmxn.txt"这个文本文件中去。 ②在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。 < ①将其后面的文件的内容作为其前面命令的输入。 ②在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。 . ①在路径的\后紧跟或者单独出现时:

linux中特殊符号大全

在linux中你会用这些特殊符号吗? 在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井号 (comments) 这几乎是个满场都有的符号,除了先前已经提过的"第一行" #!/bin/bash 井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。 # This line is comments. echo "a = $a" # a = 0 由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。这常用在撰写过程中。#echo "a = $a" # a = 0 如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。 ~ 帐户的 home 目录 算是个常见的符号,代表使用者的 home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user 或者当成是路径的一部份:~/bin ~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令 pwd的作用是相同的。 # echo ~+/var/log ~- 上次的工作目录,这个符号代表上次的工作目录。 # echo ~-/etc/httpd/logs ; 分号 (Command separator) 在 shell 中,担任"连续指令"功能的符号就是"分号"。譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/. ;; 连续分号 (Terminator) 专用在 case 的选项,担任 Terminator 的角色。 case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version 0.1" ;;esac . 逗号 (dot,就是“点”) 在 shell 中,使用者应该都清楚,一个 dot 代表当前目录,两个 dot 代表上层目录。

Linuxshell特殊符号学习汇总

肄在 shell 中常用的特殊符号罗列如下: 羈 # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != 羇输出/ 输入重导向 膅 > >> < << : > &> 2&> 2<>>& >&2 膂 # 井号 (comments) 莈这几乎是个满场都有的符号,除了先前已经提过的 " 第一行 " 螈#!/bin/bash 芆井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文 字,不会被执行。 芀 # This line is comments. 肁 echo "a = $a" # a = 0 蒈由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。这常用在 撰写过程中。 肃 #echo "a = $a" # a = 0 蚃如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符 号,不具上述的特殊功能。 薀 ~ 帐户的 home 目录 膈算是个常见的符号,代表使用者的 home 目录: cd ~ ;也可以直接在符号后加上某帐户 的名称: cd ~user 肅或者当成是路径的一部份: ~/bin ;~+ 当前的工作目录, 这个符号代表当前的工作目录, 她和内建指令 pwd 的作用是相同的。 螁 # echo ~+/var/log~- 上次的工作目录,这个符号代表上次的工作目录。 羀 # echo ~-/etc/httpd/logs 蚅 ; 分号 (Command separator) 肃 Linux shell 特殊符号学习汇总

批处理各符号的功能

是打开地即显当前文件地路径,加上后,所有路径都不显示,但是这行还能显出来,要让这行也消失地话就在它们前面 加一个即,另外命令地另一种用法,可以直接编辑文本文件,例如: >结晶果是在当前目录下生成一个地文件,双击直接执行这个文件时,就会执行这个命令资料个人收集整理,勿做商业用途 . . > 这个字符地意思是将">"前面地内容传递并且覆盖">"后面地内容,它所起地作用是将运行地回显结果传递到后面地范围. 例如:中地内容是,执行>即将地内容覆盖原有地.与这个资料个人收集整理,勿做商业用途 符号相似地还有>>它地功能不是覆盖而追加,即将运行后地内容加到原来地后. . 这是一个管道传输命令,意思是将上一命令执行地结果传到下一个命令去处理 例如: :\ "" 以上命令是:查找:\所有,并发现字符串.资料个人收集整理,勿做商业用途 :第一条命令第二条命令[ 第三条命令...] 用这种方法可以同时执行多条命令,当碰到执行正确地命令后将不执行后面地命令,如果没有出现正确地命令则一直执行完所有命令资料个人收集整理,勿做商业用途 ;(只要正确后面地就不执行) . ^ 是对特殊符号"<",">",""地前导字符,在命令中他将以上个符号地特殊功能去掉,仅仅只把他们当成符号而不使用他们地特殊资料个人收集整理,勿做商业用途 意义. 例如: :\> ^> 结果为:>没有追加只是显示出来而已 . 这个符号允许在一行中使用个以上不同地命令,当第一个命令执行失败了,也不影响后边地命令执行 例如::\> : : 结果是先后执行 . 这个命令和上边地类似,但区别是,第一个命令失败时,后边地命令也不会执行 例如::\> : : 由于电脑上没有盘所以显示结果为:系统找不到指定地路径.这样以来,后面地资料个人收集整理,勿做商业用途 两个盘就不执行啦.(当第个命令失败时此命令后面地命令将不再执行,也就是说一直执行到失败为止) . "" 双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法资料个人收集整理,勿做商业用途 " " * 以上三种方法都可以进入这个目录 . , 逗号相当于空格,在某些情况下“,”可以用来当做空格使 比如 :\ . ; 分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序还是资料个人收集整理,勿做商业用途 会执行. 比如: :\:\:\:\ 以上命令相当于 :\ :\ :\ :\ 但是前面执行地盘不存在地话,后面地命令将不会执行.资料个人收集整理,勿做商业用途 例如::\> : : 结果为:系统找不到指定地路径. .在地后面加一个点,所起到地作用是显示一空行.以下范例显示地批处理程序包含前后各有一个空行地三行消息: . .资料个人收集整理,勿做商业用途

LINUX SHELL 通配符、元字符、转义符使用实例介绍

下面是一个实例: 代码如下: [chengmo@localhost ~/shell]$ ls a.txt b.txt c.old #2 [chengmo@localhost ~/shell]$ ls *.txt a.txt b.txt #3 [chengmo@localhost ~/shell]$ ls d*.txt ls: 无法访问 d*.txt: 没有那个文件或目录 从上面这个实例,不知道大家有没有发现问题呢。我们先了解一下,通配符相关知识,再分析下这个实例吧。 一、linux shell通配符(wildcard) 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在命令的参数里(它不用在命令名称里,也不用在操作符上)。当shell在参数中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给命令,然后再由命令进行处理。总之,通配符实际上就是一种shell实现的路径扩展功能。在通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。 我们回过头分析上面命令吧:在第2个命令中,*.txt 实际shell搜索文件,找到了符合条件的文件,命令会变成:ls a.txt b.txt ,实际在执行ls 时候传给它的是a.txt b.txt . 而命令3,d*.txt 由于当前目录下面没有这样的文件或目录,直接将d*.txt 作为ls 参数,传给了 ls .这个时候* 只是一个普通的 ls 参数而已,已经失去了它通配意义。由于找不到文件,所以会出现:无法访问提示! 了解了shell通配符,我们现在看下,shell常见通配符有那一些了。 shell常见通配符:

Windows批处理大全

Windows 批处理大全(附各种实例) 批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁、批量植入后门程序等。下面就开始我们批处理学习之旅吧。 一.简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) 3.Goto 命令 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto nop arm s if {%2}=={} goto nop arm s(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @Rem check parameters if null show usage :nop arm s echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 4.Rem 命令 注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的

Linux Shell特殊字符和控制字符大全

Linux Shell特殊字符和控制字符大全Shell特殊字符 # 注释 ?表示注释 #注释 ?在引号中间和\#等表示#本身 ?echo ${PATH#*:} # 参数替换,不是一个注释 ?echo $(( 2#101011 )) # 数制转换,不是一个注释 ; 分隔 ?命令分隔,在一行中写多个命令 echo "aa" ; echo "bb" ?在条件中的if和then如果放在同一行,也用;分隔 ;; case条件的结束 . 命令相当于source命令 ?命令:source ?文件名的前缀,隐藏文件 ?目录:.当前目录,..父目录 ?正则表达式:匹配任意单个字符 "" 部分引用支持通配符扩展 ' ‘ 全引用,不进行通配符扩展 \ 转义 / 目录分隔符 , 多个命令都被执行,但返回最后一个 ` 后置引用 : 操作符 ?空操作 ?死循环: while : ?在if/then中表示什么都不做,引出分支

?设置默认参数: : ${username=`whoami`} ?变量替换: : ${HOSTNAME?} ${USER?} ${MAIL?} ?在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如: : > data.xxx #文件"data.xxx"现在被清空了. 与 cat /dev/null >data.xxx 的作用相同然而,这不会产生一个新的进程,因为":"是一个内建命令. 在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影 响. 如果文件不存在,将创建. * 匹配0个或多个字符;数学乘法;**幂运算 ? 匹配任意一个字符;但在((a>b?a:b))表示c语言中的三目运算 $ ?取变量的值 echo $PATH ?正则表达式中表示行的结尾 ?${} 参数替换 ${PAHT} ?$* 所有参数 ?$# 参数个数 ?$$ 进程的ID ?$? 进程的返回状态 ( ) ?命令组,在一个子Shell中运行 (a=3;echo $a) 其中定义的变量在后面不可用 ?数组初始化: array=(a,b,c) { } 代码块,即一个匿名函数,但其中定义的变量在后面依然可用 { } \; 用在find的-exec中 $find -name *.txt -exec cat {} \; [ ] ?测试 [-z $1] ?数组元素 a[1]='test' ?[[]]表示测试使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.

cmd中的特殊符号

cmd中的特殊符号 2007年05月31日星期四 00:46 @ \\隐藏命令的回显。 ~ \\在for中表示使用增强的变量扩展; 在set中表示使用扩展环境变量指定位置的字符串; 在set/a中表示按位取反。 % \\使用两个%包含一个字符串表示引用环境变量。比如一个%time%可以扩展到当前的系统时间; 单个%紧跟0-9的一个数字表示引用命令行参数; 用于for中表示引用循环变量; 连续的两个%表示执行时脱为一个%。 ^ \\取消转义字符,即将所有转义字符的转义作用关闭。比如要在屏幕显示一些特殊的字符,比如> >> | ^等时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^|就是显示一个|字符了; 在set/a中是按位异; 在findstr/r的[]中表示不匹配指定的字符集。 & \\命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令; 在set/a中是按位与。 * \\代表任意个任意字符,就是我们通常所说的"通配符";比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令"dir c:\*.txt"; 在set/a中是乘法。比如"set/a x=4*2",得到的结果是8; 在findstr/r中表示将前一个字符多次匹配。 () \\命令包含或者是具有优先权的界定符吧,比如for命令要用到这个(),我们还可以在if,echo等命令中见到它的身影; - \\范围表示符,比如日期的查找,for命令里的tokens操作中就可以用到这个字符; 在findstr/r中连接两个字符表示匹配范围;

Linux Shell 通配符、元字符、转义符使用实例介绍

说到shell通配符(wildcard),大家在使用时候会经常用到。下面是一个实例:view sourceprint? 1 view sourceprint? 1[chengmo@localhost ~/shell]$ ls 2a.txt b.txt c.old 3 4# 2 view sourceprint? 1[chengmo@localhost ~/shell]$ ls*.txt 2a.txt b.txt 3 4# 3 view sourceprint? 1[chengmo@localhost ~/shell]$ ls d*.txt 2ls: 无法访问 d*.txt: 没有那个文件或目录 从上面这个实例,不知道大家有没有发现问题呢。我们先了解一下,通配符相关知识,再分析下这个实例吧。 一、linux shell通配符(wildcard) 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在命令的“参数”里(它不用在命令名称里,也不用在操作符上)。当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符实际上就是一种shell实现的路径扩展功能。在通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。 我们回过头分析上面命令吧:在第2个命令中,*.txt 实际shell搜索文件,找到了符合条件的文件,命令会变成:ls a.txt b.txt ,实际在执行ls 时候传给它的是a.txt b.txt . 而命令3,d*.txt 由于当前目录下面没有这样的文件或目录,直接将”d*.txt” 作为ls 参数,传给了ls .这个时候”*” 只是一个普通的ls 参数而已,已经失去了它通配意义。由于找不到文件,所以会出现:无法访问提示! 了解了shell通配符,我们现在看下,shell常见通配符有那一些了。 shell常见通配符: 字符含义实例

批处理文件修改注册表中的一些东西

这要修改注册表中的一些东西,给你一个批处理文件,设置一下就好了! 把以下部分复制粘贴到记事本中,保存,然后把保存的文件的扩展名.txt改成.bat然后双击执行! ================================================================= @ cls @ echo off @ title 刚子收集制作整理 ::2为绿色背景F为亮白色背景 @ color 2F @ ECHO. @ ECHO. @ ECHO ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ @ ECHO ┃┃ @ ECHO ┃刚子收集制作整理┃ @ ECHO ┃大家可以免费使用和修改┃ @ ECHO ┃┃ @ ECHO ┃QQ:15128965 ┃ @ ECHO ┃欢迎光临刚子博客:┃ @ ECHO ┃┃ @ ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛ @ ECHO. @ ECHO. @ echo %date% %time% %ver% @ ECHO. ::将每行中的第二个和第三个符号传递给for 程序体;用逗号和/或空格定界符号。 ::请注意,这个for 程序体的语句引用%i 来取得第二个符号,引用%j 来取得第三个符号,引用%k来取得第三个符号后的所有剩余符号。 @ for /f "tokens=1,3*" %%i in ('ver') do set v=%%i %%j %%k @ echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @ echo. @ echo 计算机名:%COMPUTERNAME% @ echo 操作系统:%OS% @ echo 操作系统版本:%v% @ echo 系统所在分区:%systemdrive% @ echo 系统所在目录windows:%SystemRoot% @ echo 当前用户名:%USERNAME% @ echo 用户配置文件目录:%USERPROFILE% @ echo. @ echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @ ECHO. ::%windir% 和%SystemRoot% 是一样的 ::for /r "%userprofile%\My Documents\" %%i in (*.*) do echo %%i >>1.txt

Linux简答题大全(二)

Linux简答题大全 1、在获取帮助时,常使用的是man 与help ,这两者有何不同? 要使用Linux操作系统,首先要知道如何获得帮助。Linux系统中有大量命令和实用工具软件,当用户想使用某个命令,而又不清楚命令的具体使用方法时,可以借助Linux提供的联机帮助手册获取各种命令和软件的使用信息。 只要输入man命令和待要查命令的名称(如man cd),就会在屏幕上列出帮助页。 help命令用于查看Shell命令的使用方法。在所查找的命令后输入help 命令,就可以看到所查命令的内容了。 2、Linux 文件的存取权限有什么,如何显示文件的存取权限? Linux 文件的存取权限有四种:读(r)、写(w)、执行(x)和无权(-)。 对目录来说,执行权限允许用户进入和退出该目录。 利用ls –l 命令可以显示文件的存取权限。 3、要知道date 如何使用,应该如何查询?

最简单的方式就是使用man date 或info date 来查看,如果该套件有完整说明的话,那么应该也可以在/usr/share/doc 里面找到说明档。 4、Linux文件系统中包括的主要文件类型有哪些? 普通文件:普通文件包括文本文件、二进制可执行文件、shell脚本文件以及各种类型的数据文件,如图像文件、声音文件等。 目录文件:目录文件是一种特殊的文件,它们包含文件名和子目录名,以及查找这些文件和子目录所必需的信息。 链接文件:普通的链接实际上不是文件,它们仅是指向同一索引节点的目录条目,是一个索引节点表。 设备文件:Linux系统把每一个输入/输出设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。其中可以读写单个字符的是设备字符设备(如键盘);不能访问单个字符,而必须整块读写的设备称作块设备(如磁盘)。 5、试比较图形化安装模式和文本安装模式的特点? 图形化安装模式方便易用,文本安装模式速度稍快,均能完成同样的安装功能。

批处理各符号的功能1.(新)

批处理各符号的功能1. echo有两个状态一个是on 一个是off默认的是on 它的功能是显示当前文件的路径,如果不写on 或者是off的时候,默认情况下 是打开的即显当前文件的路径,加上off后,所有路径都不显示,但是echo off这行还能显出来,要让这行也消失的话就在它们前面 加一个@即@echo off,另外echo命令的另一种用法,可以直接编辑文本文件,例如: echo netstat -an >a.bat结晶果是在当前目录下生成一个a.bat的文件,双击直接执行这个文件时,就会执行netstat -an这个命令 。 2. > 这个字符的意思是将">"前面的内容传递并且覆盖">"后面的内容,它所起的作用是将运行的回显结果传递到后面的范围. 例如:ipconfig.txt中的内容是1113333,执行ipconfig /all >ipconfig.txt即将ipconfig /all的内容覆盖原有的1113333。与这个 符号相似的还有>>它的功能不是覆盖而追加,即将运行后的内容加到原来的1113333后。 3. | 这是一个管道传输命令,意思是将上一命令执行的结果传到下一个命令去处理 例如: dir c:\|find "txt" 以上命令是:查找C:\所有,并发现TXT字符串。 || Usage:第一条命令|| 第二条命令[|| 第三条命令...] 用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令 ;(只要正确后面的就不执行) 4. ^ 是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊 意义。 例如: C:\>echo ipconfig.txt ^>ipconfig

UNIX中特殊符号的使用

更好地理解UNIX? 用户输入的这些“奇怪的” 字符。学习如何在UNIX 中使用管道、重定向、操作符等特性。 现在,您已经在IBM? AIX? 上工作了一段时间了。您已经学习了几个基本命令,能够在目录结构中移动、创建和修改文件、查看正在运行的进程以及管理用户和系统。这很不错,但是您希望了解UNIX? 管理员输入的命令是什么意思。这些命令中包含许多奇怪的符号。在本文中,了解|、>、>>、<、<<、[[和]]等符号在UNIX 和Linux? 中的意思,以及如何使用&&、||、<、<=和!=操作符。 管道 如果您熟悉UNIX,那么管道(或pipe)会是每天都要接触到的东西。管道最初是由Malcolm McIlroy 开发的,可以使用管道把一个命令的标准输出(stdout)定向到下一个命令的标准输入(stdin),这样就形成了连续执行的命令链。可以在一个命令行上使用多个管道。在许多时候,一个命令的stdout 用作下一个命令的stdin,第二个命令的stdout 又被重定向到另一个命令的stdin,依此类推。 例如,在排除故障或执行日常检查时,大多数UNIX 管理员首先做的事情之一是查看系统上当前正在运行的进程。清单1演示这样的检查。 清单 1. 日常进程检查示例 # ps –ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Jul 27 - 0:05 /etc/init root 53442 151674 0 Jul 27 - 0:00 /usr/sbin/syslogd root 57426 1 0 Jul 27 - 0:00 /usr/lib/errdemon root 61510 1 0 Jul 27 - 23:55 /usr/sbin/syncd 60 root 65634 1 0 Jul 27 - 0:00 /usr/ccs/bin/shlap64 root 82002 110652 0 Jul 27 - 0:24 /usr/lpp/X11/bin/X -x abx -x dbe -x GLX -D /usr/lib/X11//rgb -T -force :0 -auth /var/dt/A:0-SfIdMa root 86102 1 0 Jul 27 - 0:00 /usr/lib/methods/ssa_daemon -l ssa0 root 106538 151674 0 Jul 27 - 0:01 sendmail: accepting connections root 110652 1 0 Jul 27 - 0:00 /usr/dt/bin/dtlogin -daemon root 114754 118854 0 Jul 27 - 20:22 dtgreet root 118854 110652 0 Jul 27 - 0:00 dtlogin <:0> -daemon root 131088 1 0 Jul 27 - 0:07 /usr/atria/etc/lockmgr -a /var/adm/atria/almd -q 1024 -u 256 -f 256 root 147584 1 0 Jul 27 - 0:01 /usr/sbin/cron root 155816 151674 0 Jul 27 - 0:04 /usr/sbin/portmap root 163968 151674 0 Jul 27 - 0:00 /usr/sbin/qdaemon root 168018 151674 0 Jul 27 - 0:00 /usr/sbin/inetd root 172116 151674 0 Jul 27 - 0:03 /usr/sbin/xntpd root 180314 151674 0 Jul 27 - 0:19 /usr/sbin/snmpmibd root 184414 151674 0 Jul 27 - 0:21 /usr/sbin/aixmibd root 188512 151674 0 Jul 27 - 0:20 /usr/sbin/hostmibd root 192608 151674 0 Jul 27 - 7:46 /usr/sbin/muxatmd root 196718 151674 0 11:00:27 - 0:00 /usr/sbin/rpc.mountd root 200818 151674 0 Jul 27 - 0:00 /usr/sbin/biod 6

dos批处理命令小程序

一.简单批处理内部命令简介 先来看一个垃圾清理批处理文件吧 @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%\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 将上面的内容保存为*.bat就可以运行了,清理系统垃圾 下面是详细讲解 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当 前回显设置。 语法 echo [{on|off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)

Linux复习提纲--超详细(邝颖杰)

考试题型:选择题(+判断题)、简答题、综合应用 一、Linux、类Unix基本常识 1、什么是Linux Linux是一个类UNIX内核的可以自由发布的实现版本,是一个操作 系统的底层核心。 2、Linux的特性 1)开放性 2)多用户 3)多任务 4)良好的用户界面 5)设备独立性 6)丰富的网络功能 7)可靠的系统安全 8)良好的可移植性 3、GNU、GPL概念 1)GNU是“GNU’s Not UNIX”的递归缩写 2)GPL:GNU通用公共许可证 4、Linux的版本 Linux的版本分为内核版本和发行版本,其中内核版本号由linus等人制定和维护,全球统一。发行版本由各公司自行制定。 内核版本号格式: x.y.zz (x为主版本号,y为次版本号,zz为次次版本号) 内核版本号有一个规则,即次版本号为偶数的是稳定版本,为奇数的是发展版本。 5、Linux各个目录的意义

/bin:常用系统程序目录。 /boot:开机设定目录,也是摆放核心vmlinuz的地方。 /dev:摆放系统设备装置文件的目录。 /etc:系统配置文件,尤其是passwd、shadow文件。 /etc/rc.d/init.d:系统开机的时候载入服务的scripts的摆放地点。 /home:系统使用者的目录。 /lib:Linux执行或编译程序函数库目录。 /mnt:软驱与光驱接入挂载的地方 /proc:系统核心与执行程序的一些信息 /root:系统管理员的目录 /tmp:临时文件目录 /usr/bin、/bin:一般执行文件摆放的地方。 /usr/sbin、/sbin:系统管理员常用指令集。 /var:摆放系统日志文件的地方。 /lost+fount:摆放系统不正常产生错误时遗失的片段。 二、Linux的一些基本指令 1、知道各个指令是什么意思

目前为止最全的批处理教程

目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ftype 12、pushd 和 popd 13、CALL 14、shift 15、IF 16、setlocal 与 变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB显示或更改文件属性 第二节 常用特殊符号

1、@命令行回显屏蔽符 2、%批处理变量引导符 3、> 重定向符 4、>>重定向符 5、<、>、<& 重定向符 6、|命令管道符 7、^转义字符 8、组合命令 9、& 组合命令 10、||组合命令 11、\"\"字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章 FOR命令详解 一、基本格式 二、参数 /d仅为目录 三、参数 /R递归(文件名) 四、参数 /L迭代数值范围 五、参数 /F迭代及文件解析 第三章 FOR命令中的变量

一、 ~I- 删除任何引号(\"),扩展 %I 二、 %~fI- 将 %I 扩展到一个完全合格的路径名 三、 %~dI- 仅将 %I 扩展到一个驱动器号 四、 %~pI- 仅将 %I 扩展到一个路径 五、 %~nI- 仅将 %I 扩展到一个文件名 六、 %~xI- 仅将 %I 扩展到一个文件扩展名 七、 %~sI- 扩展的路径只含有短名 八、 %~aI- 将 %I 扩展到文件的文件属性 九、 %~tI- 将 %I 扩展到文件的日期/时间 十、 %~zI- 将 %I 扩展到文件的大小 十一、 %~$PATH:I 第四章 批处理中的变量 一、系统变量 二、自定义变量 第五章 set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章 if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command

相关文档
最新文档