導航:首頁 > 程序命令 > 命令行變數運算

命令行變數運算

發布時間: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..\"

閱讀全文

與命令行變數運算相關的資料

熱點內容
如何更改伺服器的地址嗎 瀏覽:318
快手上的領券app是什麼牌 瀏覽:7
照片jpg轉換成pdf 瀏覽:518
復函數的運演算法則 瀏覽:865
android語言切換實現 瀏覽:17
山西省開山壓縮空壓機 瀏覽:759
cc程序員注意事項 瀏覽:256
遺傳演算法工具箱函數 瀏覽:407
北汽共享汽車app叫什麼 瀏覽:566
app頂部和底部叫什麼 瀏覽:591
伺服器的地址和埠怎麼設置 瀏覽:170
領動汽車怎麼裝app 瀏覽:229
it程序員轉數控編程 瀏覽:471
伺服器在什麼設置里邊 瀏覽:714
愛馳app怎麼綁定車輛 瀏覽:800
python數據貼標簽教程 瀏覽:804
編程如何提升孩子想像力 瀏覽:386
中穎單片機串口 瀏覽:661
java02 瀏覽:579
南航考研演算法題難度 瀏覽:591