2757com 1

是传统的Unix的shell2757com,不论在写shell

 

goto end

(2)echo on (默认)

15、repeat

对于跨平台的程序,通常会提供一些有用的命令行工具,因此shell脚本、bat脚本文件就必不可少了。网络上shell的书、文章都不少的,所以了解起来会相对容易的多,而windows下的bat网上则少有涉及。这里不打算写windows
bat 编程大全,而是简单对bat做一个简单的入门级的学习。

prompt $p$g 设置提示符前有目录提示

显示执行命令(除echo)和执行结果

history用来查看command执行的历史。
!!用来执行上一条命令。

基本命令(rem, echo, @,/?)

rem:注释 (comment, remarks)。参数可以是任何内容。

echo :它有两个功能:打印消息、调试开关。如果参数是on
或者off,代表打开、关闭调试,如果后面是其它内容,则参数代表要输出的消息。为什么说是debug开关呢?如果设置了echo
on,随后执行的任何命令及其执行结果都会输出到标准输出流。

@用于关闭某个命令的调试信息,意思是说使用@标注的命令不会打出命令本身、执行结果。

/? 查看命令帮助

例如:

REM open the cmd echo
@echo on
echo hello, windows cmd 
@echo hello, windows cmd 

REM close the cmd echo
@echo off
echo hello, windows cmd 
@echo hello, windows cmd

 

执行结果: 

D:\Note\windows cmd>REM open the cmd echo

D:\Note\windows cmd>echo hello, windows cmd
hello, windows cmd
hello, windows cmd

D:\Note\windows cmd>REM close the cmd echo
hello, windows cmd
hello, windows cmd

 

对于REM的命令,也是会打到STD里,如果不希望看到,就可以使用@标注。 

 

 

例:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入
a.txt中,启动UCDOS,进入WPS等功能。

parameters 这些为传送到命令/程序的参数

  • 表示屏蔽所有的中断,此时按下ctrl+C将会被忽略。 

Windows cmd

set temp=c:\temp 设置临时目录

5.Pause

while(expression)
  commands
  continue

For-in-do

循环执行,命令语法:

for {%variable | %%variable} in (set) do command [CommandLineOptions]

1)For, in, do 是基本结构,必不可少;

2){%variable | %%variable} 必要的,变量大小写敏感。

在命令提示符中执行for时,for中引用变量时,使用%

在批处理文件中执行for时,for中引用变量时,使用%%

此外,为了避免与bat文件的参数 %0到 %9相冲突,所以变量不能是0-9的数字

3)( set ) 必要的。用于指定多个 files, directories, range of values,
textstrings。括号不能省。

 

4)command 必要的,代表要执行的命令。

5)commandLineOptions, 执行command时所需的参数

 

更多用法,可能参考:

 

 

3.Goto 命令
指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample:
if { %1 }=={ } goto noparms
if { %2 }=={ } goto
noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

%2 — 第2个参数

通过set x = `cmd`来执行命令,且结果赋值给变量。

控制命令(if-else, for-in-do, goto)

 

9.If 命令

            Sample:

csh中使用path代替PATH,设置类似于数组的使用。

goto

语法:goto label

跳转到指定的label。如果指定的label不存在,就继续执行下一条命令。如果找到label,就从label处继续执行。如果程序以正常顺序执行到一个label处,而不是通过goto跳转到label,label下的语句仍旧以正常顺序执行。

 

2757com 1 

 

 

想要了解更多指令参见:

 

 

 

 

 

 

 

:defrag
c://dos//defrag
goto end
:mem
mem
goto end
:end
echo good bye

[python] 

19、历史command

if-else

 

if [noterrorlevel number command [else expression] 基于上一个命令执行的结果进行判定操作

if [notstring1==string2 command [else expression] 判定两个字符串是否相等

if [notexist FileName command [else expression]  判定指定的文件是否存在

If command extensions are enabled, use the following syntax:

if [/istring1 CompareOp string2 command [else expression] 进行字符串比较 (equ, neq, lss, leq, gtr, geq)

if cmdextversion number command [else expression]

if defined variable command [else expression]

 

 

 

dir c:\*.* >a.txt 将c盘文件列表写入a.txt

Sample:

变量设定语法 set noclobber

不论在写shell,还是bat,它们的设计都遵守这样一条原则:一切都是命令。Windows下命令是大小写不敏感的。

——autoexec.bat

 

只能使用?,*,[abc],[a-c]。

echo、@、call、pause、rem
是批处理文件最常用的几个命令,我们就从他们开始学起。 echo
表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@ 与echo
off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。
call 调用另一条批处理文件(如果直接调用别的批处理文件
,执行完那条文件后将无法执行当前文件后续命令)
pause 运行此句会暂停,显示Press any key to continue…
等待用户按任意键后继续
rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的

 

20、pushd和popd用来维护目录栈

3、if errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if
errorlevel 2 goto x2
DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码

[python] 

22、在脚本中处理中断

4.Rem 命令
注释命令,在C语言中相当与/*——–*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。
Rem Message
Sample:@Rem Here is the description.

%3 — password

source使得程序在当前的shell中被执行,而不是派生子进程来执行。

:mem
mem
goto end

if errorlevel 2 goto mem

复制代码 代码如下:

:defrag
c:\dos\defrag
goto end

if {%1}=={} goto noparms  

% set noclobber
% cat /etc/passwd >> nopass
nopass: No such file or directory
% cat /etc/passwd >>! nopass
%

又如C:根目录下一批处理文件的名为t.bat,内容为 type %1 type %2

:noparms  

将命令的输出和报错信息重定向到一个文件cmd>&file。
将命令的输出经管道发往另一个命令cmd|cmd.
将命令的输出和报错信息经管道发往另一个命令cmd|&cmd。
条件语句为 cmd && cmd 或 cmd || cmd。
command<<WORD
表示将command的输入重定向为从第一个WORD处开始,到下一个WORD处之间的内容(即here文档)。

lh c:\dos\smartdrv.exe 加载磁盘加速管理

if errorlevel 3 goto defrag (应先判断数值最高的错误码)

取消变量设定语法 unset noclobber

echo off 不显示命令行

  1. echo

通过$argv[1],$argv[2]或$1,$2来访问命令行参数。命令行参数的个数为$#argv。

批处理文件中还可以像C语言一样使用参数,这只需用到一个参数表示符%。

8.choice 命令

if {(command)} then
  commands
endif
 

pause 暂停,等待按键继续

@Rem check parameters if null show usage  

这个 noclobber
变量,它的功能便是停止重定向符号“>”的覆盖(overwiting)已存在文件以及符号“>>”要将字符写入一个不存在的文件时,自动产生该文件的特性。

——特殊命令
if goto choice for
是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。

:begin  

复制代码 代码如下:

该集表示以增量形式从开始到结束的一个数字序列。

 

复制代码 代码如下:

wps 使用wps

定义一个标签

14 while/foreach

DOS在启动会自动运行autoexec.bat这条文件,一般我们在里面装载每次必用的程序,如:
path(设置路径)、smartdrv(磁盘加速)、 mouse(鼠标启动)、mscdex(光驱连接)、
doskey(键盘管理)、set(设置环境变量)等。

运行 Pause 命令时,将显示下面的消息:

仅用两个例子让读者明白,设定后的实际使用状况。 

标号用 :字符串 表示,标号所在行不被执行

 

onintr
命令后跟一个标号名,finish是用户自定义的标号。如果发生中断,控制将被转移到finish标号。通常该行位于脚本的开头。除非当程序正在执行时按ctrl+C(中断键),此时控制将被转移到该标号。onintr

:end
echo this is the end

if {%2}=={} goto
noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
 

4)命令行参数

FOR /L %variable IN (start,step,end) DO command [command-para

c:dosdefrag

repeat 3 “echo helloworld”

5.Pause 命令

defrag,mem,end[D,M,E]?

引号必须成对出现,而且必须在同一行上配对。可以用反斜杠来转义换行符,这样就能在下一行配对了。
单引号可用于保护双引号,双引号也可以用来保护单引号。
单引号保护除历史字符(!)之外的所有元字符不被解释。
双引号保护除历史字符(!),变量替换字符($)和反引号(用于命令替换)之外的所有元字符,使其不被解释。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章