导航:首页 > 程序命令 > 命令行变量运算

命令行变量运算

发布时间:2022-06-23 14:32:45

‘壹’ cmd 变量做加法运算

如果在cmd窗口中直接输入,用

cmd/v
for/l%iin(1,1,10)do@(
set/an=1+%i>nul
cdo.exepr_cmcc_%i101-!n!012
)
exit

如果保存为bat文件执行,用

@echooff

for/l%%iin(1,1,10)do(
set/an=1+%%i
cdo.exepr_cmcc_%%i101-!n!012
)

‘贰’ 如何在批处理命令行中进行逻辑运算 比如我要判断一个变量a的值,如果大于5则a 等于1, 小于5则a等于0

批处理学习教程

在入侵中,大家有过编一个简单的程序来实现你的目的,BAT应该是大家常用的吧。如果你还没学会,那就快看下面的吧,我相信它会对你有意而无害的。

第一部分:批处理的专用命令

批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。这些命令统称批处理命令,下面我就来给大家介绍一下批处理的命令。

1、 REM
REM 是个注释命令一般是用来给程序加上注解的,该命令后的内容在程序执行的时候将不会被显示和执行。

在命令行前加两个冒号(::)也是注释。例:::cd /d c:\win*\*32

2、 ECHO
ECHO 是一个回显命令主要参数有OFF和 ON,一般用ECHO message来显示一个特定的消息。

例:
Echo off
Rem 以上代表关闭回显即不显示所执行的命令
Echo "Hello"
Rem 以上代表显示“Hello”这列字符

3、 GOTO
GOTO 即为跳转的意思。在批处理中允许以“:XXX”来构建一个标号然后用GOTO :标号直接来执行标号后的命令。例:

dir c:\
goto label
dir d:\
:label
dir e:\
pause

4、CALL
CALL 命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后再继续执行原来的批处理。

例:

(1)批处理2.BAT内容如下:

ECHO "这就是2的内容"

(2)批处理1.BAT内容如下:

ECHO "这是1的内容"
CALL 2.BAT
ECHO "1和2的内容全部显示完成"

执行C:\>1.BAT,显示结果:

这是1的内容
这就是2的内容
1和2的内容全部显示完成

5、PAUSE
PAUSE 停止系统命令的执行并显示下面的内容。例:
C:\> PAUSE
请按任意键继续 . . .

6、 IF
IF 条件判断语句,语法格式如下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

说明:

(1)[NOT] 将返回的结果取反值即“如果没有”的意思。
ERRORLEVEL 是命令执行完成后返回的退出值
Number 退出值的数字取值范围0~255。判断时值的排列顺序应该由大到小。返回的值大于或等于指定的值时条件成立。

(2)string1==string2 string1和string2都为字符的数据,英文字符的大小写将看做不同,这个条件中的等于号必须是2个(绝对相等),条件相等后即执行后面的 command。

(3)EXIST filename 为文件或目录存在的意思。
IF ERRORLEVEL这条语句必须放在某一个命令后面。执行命令后由IF ERRORLEVEL来判断命令的返回值。

例1、 IF [NOT] ERRORLEVEL number command(检测命令执行完后的返回值做出判断)

echo off
dir z:
rem 如果退出代码为1(不成功)就跳至标题1处执行
IF ERRORLEVEL 1 goto 1
rem 如果退出代码为0(成功)就跳至标题0处执行
IF ERRORLEVEL 0 goto 0
:0
echo 命令执行成功!
Rem 程序执行完毕跳至标题exit处退出
goto exit
:1
echo 命令执行失败!
Rem 程序执行完毕跳至标题exit处退出
goto exit
:exit
Rem 这里是程序的出口

例2.1、IF string1==string2 command(检测当前变量的值做出判断)

ECHO OFF
IF %1==2 goto no
Echo 变量不相等!
Goto exit
:no
echo 变量相等!
goto exit
:exit
pause

大家可以这样看效果 C:\>test.bat 数字

test.bat 1 的输出结果是:变量不相等!
test.bat 2 的输出结果是:变量相等!

例2.2、设置变量对比

set ggg=123
if %ggg%==123 date /t
else cls

例3、 IF [NOT] EXIST filename command(发现特定的文件做出判断)

echo off
IF not EXIST autoexec.bat goto 1
echo 文件存在成功!
goto exit
:1
echo 文件不存在失败!
goto exit
:exit

这个批处理大家可以放在c盘和d盘分别执行看看效果。

如果命令扩展名被启用,IF 会如下改变:

IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command

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

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

/I 开关;如果该开关被指定,则说明要进行的字符串比较不分
大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些
比较都是通用的;原因是,如果 string1 和 string2 都是由数字组成的,字符串会被转换成数字,进行数字比较。

7、 FOR

FOR这个命令比较特殊是一个循环执行命令的命令,同时FOR的循环里面还可以套用FOR在进行循环。这篇我们介绍基本的用法就不做套用的循环了,后面再来讲解套用的循环。在批处理中FOR的命令如下:

FOR [%%c] IN (set) DO [command] [arguments]
在命令行中命令如下:
FOR [%c] IN (set) DO [command] [arguments]

常用参数:

/L 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5 (5,-1,1) 将产生序列 (5 4 3 2 1)。

/D 如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

/F 从指定的文件中读取数据作为变量

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

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

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

tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。

usebackq - 指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。

(1)下面来看一个例子:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号(即空格或逗号后的第二个字符串)传递给 for 程序体;用逗号和/或空格定界符号。请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用 usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。

举一个实际例子,比如myfile.txt的内容如下:

;dfds dsf dsf dsf ds
11 22 33 44
111
1111 2222 3333 4444 5555

这个文件中如果按照空格分割,则第二行就是四个部分(第一部分11,第二部分22...),token=2,3,4分别指的是第2、3、4部分(如果token=2,*则指的是第二部分,2以后的其余的部分),in前面的%i是分配第一个变量的标志符号,这里使用i,就意味着后面要用的是j、k...,这样token=2,3,4中指代的文件中每行的2、3、4部分就分别赋值给%i,%j,%k;而如果是token=2,* 则指代的文件中每行的第二部分就赋值给%i,后面的部分都给%j还要注意一点:如果以上命令在dos命令行下直接执行是正确的,如果写到批处理文件中,则%i等变量要写成%%i。

%i 专门在 for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的。您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或'Z' 的变量。请记住,FOR 变量名分大小写,是通用的;而且,同时不能有 52 个以上都在使用中。

您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,用单引号将括号之间的 filenameset 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的 filenameset 变成一个反括字符串。该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件分析。因此,以下例子:

FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
会枚举当前环境中的环境变量名称。

(2)以下列举一个简单的例子,说明参数/L和没有参数的区别:
删除文件1.TXT 2.TXT 3.TXT 4.TXT 5.TXT

例:
ECHO OFF
FOR /L %%F IN (1,1,5) DO DEL %%F.TXT

FOR %%F IN (1,2,3,4,5) DO DEL %%F.TXT

以上2条命令执行的结果都是一样的如下:
C:\>DEL 1.TXT
C:\>DEL 2.TXT
C:\>DEL 3.TXT
C:\>DEL 4.TXT
C:\>DEL 5.TXT

8、 SETLOCAL

开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后所做的环境改动只限于批处理文件。要还原原先的设置,必须执行ENDLOCAL。 达到批处理文件结尾时,对于该批处理文件的每个尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。例:

@ECHO OFF
SET PATH /*察看环境变量PATH
PAUSE
SETLOCAL
SET PATH=E:\TOOLS /*重新设置环境变量PATH
SET PATH
PAUSE
ENDLOCAL
SET PATH

从上例我们可以看到环境变量PATH第1次被显示得时候是系统默认路径。被设置成了E:\TOOLS后显示为E:\TOOLS但当ENDLOCAL后我们可以看到他又被还原成了系统的默认路径。但这个设置只在该批处理运行的时候有作用。当批处理运行完成后环境变量PATH将会还原。

9、SHIFT

SHIFT命令可以让在命令上的的命令使用超过10个(%0~%9)以上的可替代参数

批处理的内容是:

ECHO OFF
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

执行结果如下:

C:\>SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10 11

10、nul

nul的意思就是空设备,>nul的意思就是将运行的结果返回至空设备,也就是不返回运行结果的意思,比如,你先打开命令提示符,输入 echo 1 ,意思就是显示1,然后你回车,然后再输入 echo 1>nul 再回车,看出来有什么不同了吧,现在来说>nul 2>nul,其实原理都是一样滴,不过>nul和>nul 2>nul的不同在于,前者对于命令执行的结果是不予返回的,但是如果命令本身是错误的,比如你输入echoo 1>nul 试试,是不是还是会出错,但是如果你输入echoo 1>nul 2>nul 再试试,是不是什么都不返回了?

11、SET

(1)设置自定义变量的用法

例子:
@echo off
set var="123"
echo %var%
pause

请看 set var="123" ,这就是BAT直接在批处理中设置变量的方法!
set是命令,var是变量名,=号右边的"123"是变量的值
在批处理中我们要引用这个变就把var变量名用两个%(百分号)扩起来,如%var%

这种SET语法只能直接在BAT代码的提前赋予变量的值,有时候我们需要提供一个交互界面,让用户自己输入变量的值,然后我们在来根据这个值来做相应操作,现在我就来说说这SET的这种语法,只需要加一个"/P"参数就可以了!

例子:
@echo off
set /p var=请输入变量的值:
if %var% == 1 echo 您输入了 1 ~_~
pause

set /p 是命令语法 var是变量名 =号右边的"请输入变量的值: ",这个是提示语,不是变量的值了!

运行后,我们在提示语后面直接输入1,就会显示一行您输入了 1 ~_~ ,输入别的就没有任何反映!

(2)先回顾到这,现在讲SET其他功能

①使用set /?查看SET的帮助我们发现SET除了上面讲的
SET [variable=[string]]
SET /P variable=[promptString]
这两种语法外,还有如下几种语法:

SET /A expression
环境变量替换已如下增强:
%PATH:str1=str2%
%PATH:~10,5%
%PATH:~-10%
%PATH:~0,-2%

这机种语法有什么用处呢?现在我们来一个个讲解他们!

SET /A expression
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<< >> - 逻辑移位
& - 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<= >>=
, - 表达式分隔符

上面这些是系统帮助里的内容,看着是不是有点晕,没关系我来简单解释一下:

set的/A参数就是让SET可以支持数学符号进行加减等一些数学运算!

看例子,这里的例子请直接在CMD下拷贝命令运行,不需要保存为BAT!
set /a var=1 + 1
set /a 语法, var变量名 1 + 1 数学式子

拷贝运行后会直接显示一个2,或者运行完后我们输入echo %var%,也是2,这就是一个简单的加法运算!

set /a var=2 - 1 结果是多少呢?如果你看不到结果就echo %var%.....
set /a var=2 * 2 乘法运算
set /a var=2 / 2 除法运算
set /a var=(1+1) + (1+1) 结果等于4 看得懂吧!
set /a a=1+1,b=2+1,c=3+1 运行后会显示一个4,但我们用
echo %a% %b% %c%后看结果,会发现其他数学运算也有效果!,这就是"斗"号的作用!

有时候我们需要直接在原变量进行加减操作就可以用这种语法
set /a var+=1 这样的语法对应原始语法就是set /a var = %var% + 1
都是一样的结果,在原变量的值上在进行数学运算,不过这样写简单一点
在来一个: set /a var*=2
其他都这么用,只要帮助里有这个语法!

另外还有一些用逻辑或取余操作符,这些符号,按照上面的使用方法会报错的,比如我们在CMD里输入set /a var=1 & 1 "与运算",他并不会显示为1,而是报错,为什么?对于这样的"逻辑或取余操作符",我们需要把他们用双引号引起来,看例子

set /a var= 1 "&" 1 这样结果就显示出来了,其他逻辑或取余操作符用法
set /a var= 1 "+" 1 异运算
set /a var= 1 "%" 1 取模运算
set /a var= 2 "<<" 2 次方运算
set /a var= 4 ">>" 2 这个不太记得数学里的叫法....
数学不太行,还有几个搞不清楚了....不列出来了,这些符号也可以用&= ^= |= <<= >>= 这样的简单用法如:
set /a var"&=" 1 等于set /a var = %var% "&" 1 注意引号

②符号说到这,现在说%PATH:str1=str2%

这个是替换变量值的内容,看例子
@echo off
set a= bbs.verybat.cn
echo 替换前的值: "%a%"
set var=%a: =%
echo 替换后的值: "%var%"
pause

对比一下,我们发现他把变量%a%的空格给替换掉了,从这个例子,我们就可以发现%PATH:str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换,比如我们把上面的例子改成这样

@echo off
set a=bbs.verybat.cn
echo 替换前的值: "%a%"
set var=%a:.=伤脑筋%
echo 替换后的值: "%var%"
pause

解释set var=%a:.=伤脑筋%
set命令 var变量名 字a是要进行字符替换的变量的值,"."为要替换的值,
"伤脑筋"为替换后的值!
执行后就会把变量%a%里面的"."全部替换为"伤脑筋"
这就是set的替换字符的很好的功能!

③下面看这个,%PATH:~10,5% 这个什么意思,看例子:

@echo off
set a=bbs.verybat.cn
set var=%a:~1,2%
echo %var%
pause

执行后,我们会发现只显示了"bs"两个字母,我们的变量%a%的值不是为bbs.verybat.cn吗?怎么只显示了第2个字母和第3个字母"bs",分析一结果我们就可以很容易看出%PATH:~10,5%就是显示变量PATH里指定几位的值!
分析set var=%a:~1,2%

set命令 var变量值 a要进行字符操作的变量 "1"从变量"a"第几位开始显示 "2"显示几位和起来就是把变量a的值从第一位开始,把后两位赋予给变量var就样因该明白了吧~,注意是从第0位算起的。

其他两种语法
%PATH:~-10%
%PATH:~0,-2%
他们也是显示指定变量指定几位的值得的意思

请看%PATH:~-10% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~-3%
echo %var%
pause

这个就是把变量a倒数3位的值给变量VAR,当然我们也可以改成这样

@echo off
set a=bbs.verybat.cn
set var=%a:~3%
echo %var%
pause

这个就是把变量a的前3位的值给变量VAR

请看%PATH:~0,-3% 例子

@echo off
set a=bbs.verybat.cn
set var=%a:~0,-3%
echo %var%
pause
执行后,我们发现显示的是"bbs.verybat",少了".cn"
从结果分析,很容易分析出,这是把变量a的值从0位开始,
显示变量a总位数-3的位的值得(我们给变量a的的值bbs.verybat.cn有11位,14-3=11),这样他就只显示从第0位开始到第8位的值,并赋予给变量var

如果改成这样

@echo off
set a=bbs.verybat.cn
set var=%a:~2,-3%
echo %var%
pause
那么他就是显示从第2位开始到第8位的值,并赋予给变量var,结果是:s.verybat

第二部分:特殊的符号与批处理

在命令行下有些符号是不允许使用的但有些符号却有着特殊的意义。

1、 符号(@)

@在批处理中的意思是关闭当前行的回显。我们从上面知道用命令echo off可以关掉整个批处理的命令回显但却不能不显示echo off这个命令。现在我们在这个命令前加上@这样echo off这一命令就被@关闭了回显从而达到所有命令均不回显得要求

2、 符号(>)

>的意思是传递并覆盖。他所起的作用是将运行后的回显结果传递到后面的范围(后面可是文件也可是默认的系统控制台)例:
文件1.txt的文件内容为:
1+1
使用命令c:\>dir *.txt >1.txt
这时候1.txt的内容如下:
驱动器 C 中的卷没有标签。
卷的序列号是 301A-1508
C:\ 的目录
2003-03-11 14:04 1,005 FRUNLOG.TXT
2003-04-04 16:38 18,598,494 log.txt
2003-04-04 17:02 5 1.txt
2003-03-12 11:43 0 aierrorlog.txt
2003-03-30 00:35 30,571 202.108.txt
5 个文件 18,630,070 字节
0 个目录 1,191,542,784 可用字节

>将命令执行的结果覆盖了原始的文件内容。

在传递给控制台的时候程序将不会有任何回显(注意:这里的回显跟echo off关掉的回显不是同一概念。Echo off关掉的是输入命令的回显,这里的回显是程序执行中或后的回显)例:
C:\>dir *.txt >nul
程序将没有任何显示也不会产生任何痕迹。

3、 符号(>>)

符号>>的作用与符号>相似,但他们的区别在于>>是传递并在文件末尾追加>>也可将回显传递给控制台(用法同上)例:
文件1.txt内同为:
1+1
使用命令c:\>dir *.txt >>1.txt
这时候1.txt的内容如下
1+1
驱动器 C 中的卷没有标签。
卷的序列号是 301A-1508
C:\ 的目录
2003-03-11 14:04 1,005 FRUNLOG.TXT
2003-04-04 16:38 18,598,494 log.txt
2003-04-04 17:02 5 1.txt
2003-03-12 11:43 0 aierrorlog.txt
2003-03-30 00:35 30,571 202.108.txt
5 个文件 18,630,070 字节
0 个目录 1,191,542,784 可用字节
>>将命令执行的结果覆加在了原始的文件内容后面。

4、 符号(|)

|是一个管道传输命令意思是将上一命令执行的结果传递给下一命令去处理。例:

C:\>dir c:\|find "1508"
卷的序列号是 301A-1508

以上命令的意思为查找c:\的所有并发现1508字符串。find的用法请用 find /?自行查看

在不使用format的自动格式化参数的时候我是这样来自动格式化盘片的
echo y|format a: /s /q /v:system

用过format命令的人都知道format有一个交互对化过程,要使用者输入y来确定当前的命令是否被执行。在这个命令前加上echo y并用管道传输符|将echo执行的结果y传递给format从而达到手工输入y的目的(这条命令有危害性,测试的时候请谨慎)

5、 符号(^)

^ 是对特殊符号 > 、<、 &、的前导字符。在命令中他将以上的3个符号的特殊动能去掉仅仅只吧他们当成符号而不使用他们的特殊意义。例:

c:\>echo test ^> 1.txt
test > 1.txt

从上面可以看出并没有把test写入文件1.txt而是将test >1.txt 当字符串显示了出来。这个符号在远程构建批处理的时候很有效果。

6、 符号(&)

&符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败将不影响第2个命令的执行。例:
c:\> dir z:\ &dir y:\ &dir c:\
以上的命令将会连续显示z: y: c:盘内的内容不理会该盘符是否存在。

7、 符号(&&)

&&符号也是允许在一行中使用2个以上不同的命令,当第一个命令执行失败后后续的命令将不会再被执行。例:

c:\> dir z:\ &&dir y:\ &&dir c:\

以上的命令将会提示检查是否存在z:盘如果存在则执行,如果不存在则停止执行所有的后续命令

8、 符号(" ")

" "符号允许在字符串中包含空格。进入一个特殊的目录可以用如下方法.例:

c:\>cd “Program Files”
c:\>cd progra~1
c:\>cd pro*

以上方法都可以进入Program Files目录

9、 符号(,)

,符号相当于空格。在某些特殊的情况下可以用,来代替空格使用。例:
c:\>dir,c:\

10、 符号(;)

;符号当命令相同的时候可以将不同的目标用;隔离开来但执行效果不变。如执行过程中发生错误则只返回错误报告但程序还是会继续执行。例:
DIR C:\;D:\;E:\F:\
以上的命令相当于
DIR C:\
DIR D:\
DIR E:\
DIR F:\
当然还有些特殊的符号但他们的使用范围很小我就不再这里一一的说明了。

11、符号(||)

1命令&2命令,就是运行1命令出错、运行不成功才运行2命令。

12、DEL /F /A /Q \\?\%1
RD /S /Q \\?\%1

\\不知路径
?不知文件名
一个?就可以为a~z0-9其中一个字,中文也行。

第三部分:批处理与变量

在批处理中适当的引用变量将会使你所编制的程序应用面更广。批处理每次能处理的变量从%0~%9共10个。其中%0默认给批处理的文件名使用。除非在使用SHIFT命令后%0才能被%1所替代。引用shift命令的例子如果把%1前面多加上一个%0那么结果如下:

C:\>SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11
c:\>SHIFT.BAT 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 11

系统是如何区分每个变量的呢,系统区分变量的规则为字符串中间的空格,即只要发现空格就把空格前面的字符当作一个变量而空格后面的字符则作为另一个变量。如果你的变量是一个当中包含空格的长目录名这时候你需要用上一节特殊符号中所用的引号将他圈起来。

例如,批处理内容为:

ECHO %1
ECHO %2
ECHO %3

输入命令:
C:\>TEST "rogram Files" Program Files

结果如下:
Program Files
Program
Files

在一个复杂的批处理中又可能同时使用的变量会超过10个这时候会和系统的规则想冲突那么这个问题怎么解决呢?在系统中还有一种变量称之为环境变量(使用 SET命令可以查看当前系统的环境变量)如当前系统目录是%windir%或%SystemRoot%等。当同时使用的参数超过10个的时候,我们可以把某些在后面的程序中还要调用的变量保存为环境变量。具体用法如 SET A=%1 这样我们就命名了一个新的环境变量A 在调用变量A的时候要%A%这样调用,环境变量不受SHIFT命令影响。如果要改变一个环境变量需要重新对其设置才能改变。当然也可以进行变量与变量之间的传递来达到目的。下面我们来看一个例子,批处理如下:

ECHO OFF
SET PASS=%1
SHIFT
SET PASS1=%1
SHIFT
ECHO %PASS% %PASS1% %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %PASS% %PASS1% %9
SET PASS=%PASS1% 变量的传递
SET PASS1=%9
SHIFT
ECHO %PASS% %PASS1% %9

C:\>TEST A B 3 4 5 6 7 8 9 10 K L
A B 3 4 5 6 7 8 9 10 K (注意:这一行显示了11个变量)
A B L (在使用了3次SHIFT之后%9变成了L)
B 变量的传递 L (最后PASS的直为:B 变量的传递,PASS1的值为:L)

‘叁’ 命令行中如何实现变量的四则运算

#include"stdio.h"
#include"stdlib.h"

void main(int argc,char *argv[])
{
char str1[128];
int i,a,b,c;
char str2[128];
char str3[128];
char ch1;

if(argc<2)
return;

strcpy(str1,argv[1]);

i=0;
while(str1[i]!='*' && str1[i]!='+' && str1[i]!='-' && str1[i]!='/' && str1[i]!=0)
{
str2[i]=str1[i];
i++;
}
str2[i]=0;

ch1=str1[i];
if(str1[i] == 0)
return;

i++;
while(str1[i]!=0)
{
str3[i]=str1[i];
i++;
}
str3[i]=0;

a=atoi(str2);
b=atoi(str3);
if(ch1 == '*')
c=a*b;
if(ch1 == '+')
c=a+b;
if(ch1 == '-')
c=a-b;
if(ch1 == '/')
{
if(b != 0)
c=a/b;
}

printf("%s=%d",str1,c);
getchar();

}

‘肆’ 批处理怎么对变量的值进行加减乘除运算

好的 set /a就是算术运算

@echooff

set/pcho=请输入:

set/ares=%cho%+5-13*6

echo%cho%+5-13*6=%res%

pause>nul

‘伍’ matlab 批量运算命名变量

. 默认情况下,M函数文件中定义及使用的变量都是局部变量只在本函数的工作区内有效,一旦退出该函数,即为无效变量,所以程序如果写成函数不用担心会混。 2.命令行或M命令文件中定义和使用的变量都是全局变量,退出命令行后仍有效,如果怕混可以再程序的开头加上 clear 命令。

‘陆’ window怎样在命令行设置系统变量

1.单击“开始”à”运行“弹出“运行”窗口,在“打开”一栏输入cmd,回车。
2.进到命令提示符窗口,新建一个环境变量,比如创建一个名为JAVA_HOME的,值为JDK所在位置,则可输入set JAVA_HOME=JDK所在位置。
3.查看指定名称的环境变量,比如刚刚新建的JVVA_HOME,输入set JAVA_HOME,回车即可(如果指定的名称不存在,则会报错)。若是查看全部环境变量则输入set回车。
4.修改环境变量。我们在添加了JAVA_HOME变量后需要在path 环境变量最前面加上%JAVA_HOME%\bin;输入set path=value(其中value就是在path前面上%JAVA_HOME%\bin;后的值记住bin后面的分号不能掉)。
编后语:若想删除制定的环境变量可以输入set JAVA_HOME=再直接回车即可。

‘柒’ linux命令行里面,命令前对变量赋值

bash的语法中可以在命令前设置子进程环境变量,它影响且只影响子进程的环境变量,而对父进程没有影响
你的例子中,如果环境变量LANG=zh_CN.gb2312
LANG=C yum grouplist
语句中LANG=C只对yum进程产生影响,运行完成后,用户环境变量LANG仍为原来的

‘捌’ 关于命令行中变量问题

当你在cmd下时,应该用%variable,而在批处理下应该使用%%variable

‘玖’ c语言命令行参数四则运算

argv[2][0]是一个字符,可以使用赋值运算符赋值给一个char型变量,所以“x=argv[2][0];”是对的;而
argv[2]是一个字符串,不能使用赋值运算符赋值给一个char型数组(可以用strcpy函数复制字符串),所以“x=argv[2];”是错的。

‘拾’ 命令行中含变量

是什么语言? VB吗?
driverletter = "d"
Shell "cmd /c mkdir " & driverletter & ":\ttc..\"

阅读全文

与命令行变量运算相关的资料

热点内容
单片机的灌电流和拉电流 浏览:890
一汽金融车辆解压在哪里办成都 浏览:182
如何访问到外国服务器 浏览:755
怎么能彻底删除安卓相册照片 浏览:405
在线htmltopdf 浏览:306
python大数据范例 浏览:20
应用加密开启会耗电吗 浏览:598
安卓手机怎么设置抖音来电铃声 浏览:182
广达服务器主板开机怎么变快 浏览:1002
程序员游戏异常 浏览:71
java高并发程序设计pdf 浏览:281
zipfile编译 浏览:999
如何防止程序员接触核心代码 浏览:862
我的世界村民命令 浏览:635
服务器的kb是什么意思 浏览:293
云手机服务器的架构 浏览:56
别克君威发动机压缩比 浏览:474
go语言程序设计pdf中文 浏览:74
网红解压小新屁屁贴 浏览:152
中银app怎么看银行卡号 浏览:101