批處理中的問題,批處理中 與 有什麼區別

2022-03-05 16:46:04 字數 4046 閱讀 8092

1樓:孤星

1.set /a num=%random%%%%s%+1

夾在中間的%%是指求模的意思,也就是用隨機數除以%s%後得出的餘數.

假如%s%的值為100,那麼%random%%%100就是用隨機數除以100然後取餘數,此時餘數就只會在0-99之間了,後面再+1,num的值也就是1-100之間了.

2.if not defined num%num%

如果num%num%這個變數未定義或為空值,則執行後面的語句.if not defined就是檢測變數是否被定義或為空值.

3.call echo %%num%%

在if或for語句中設定的變數,如果要再次在if或for命令內使用.此時的%num%為區域性延遲變數,是不會被識別的,用call擴充套件到全域性變數就可以顯示了,此時一個%號就要用兩個表示%%.

或開始延遲變數後,%號用!來表示:echo !num!

另:此批處理不需要call,直接echo %num%就行,它還未涉及到延遲變數.

說的不夠專業,不知你理解否~?.呵...

2樓:乘若蕊夷英

%n 用作引數變數,n=;如:%0代表本身,%1-%9代表某個替代的變數;

%i;%%i的區別:在cmd視窗模式用%i,批處理模式中則要用%%i;兩種意思是一樣的,但不同模式,使用的%個數不一樣!

%a%這個是變數的引用;假定

seta=

定義一個變數,那個顯示變數a

就是echo

%a%$

這個符號在prompt命令中,後跟一個字母被dos定義了特殊意義;如

prompt

$g$p表示提示字元是當前驅動器的目錄,$t顯示即時時間;在doskey的巨集命令中,變數不再是%a,而是$a,即變數要用$開頭;在延遲變數中,變數也是以$開頭;

都是變數的一些用法,建議你參考一些《p處理高階教程》,裡面講得交詳細;可以到我網盤提取資料;

批處理中%與%%有什麼區別

3樓:匿名使用者

一、指代不同

1、%:表示變數的引用。

2、%%:只有在批處理裡面才寫 兩個 %% 號表示變數,變數是for 語句裡面 特有的變數。

二、用法不同

1、%:變數的引用@echo offset a=123 rem定義一個變數a 賦值為123echo %a% rem。

2、%%:for %%i in (1 2 3 4 5 ) do echo %%i,批處理中用兩個 %%,其實是編譯器編譯的時候要遮蔽一個%。

三、語法不同

1、%:專門儲存外部引數的,就是執行批處理時加的引數。只有 %1 %2 %3 %4 ...... %9。

2、%%:for %%variable in (set) do command [command-parameters]。

4樓:玉其英侍綾

%是個escape字元,通常將之譯為轉義字元,但也有更形象的譯名脫逸字元、逃逸字元等。也就是說%不僅僅將與其相關的特定字串轉義並替換為特定字串,而且自身也會被「脫逸」。而且類似於c語言中的轉義字元"\",雙%會轉義並脫逸為單%,四%則脫為雙%。

除了for迴圈變數外,批處理變數的脫逸符要成對使用,就像數學四則運算的括號一樣。

call

setb=%%a:~0,%c%%%

就你舉得這個例子來講,最裡面一對單%相當於四則運算裡的小括號,外面的一對雙%相當於中括號,再有3

個%就相當於大括號

5樓:陽光上的橋

在命令列下,自定義變數使用%i,在批處理檔案裡面,自定義變數必須使用%%i,功能完全相同,只是語法要求不同地方的不同形式。

6樓:孤星

for /f i%

會有這種表示方法?..從沒見過,怕是會出錯吧..

你執行這些沒提示出錯..??

在cmd中,for後面的變數用%加一個字母表示,如%i但實際批處理中兩上%%,在cmd解析的時候會當一個,所以要%%i表示,至於你上面的i%還真沒見過..

7樓:樹莞憑豔卉

%i是在for語句中需要傳遞的引數的變數,其在dos下寫成%i但在批處理中就要寫成%%i

批處理中%和%%的用法有哪些

8樓:她是我的小太陽

1.如果是 %a% 這種形式 ,就是變數的引用

@echo off

set a=123 rem定義一個變數a 賦值為123

echo %a% rem顯示出變數a的值(如果不加% %系統會把a當字元處理了,不會當成變數的)

2.%%i 這種變數是for 語句裡面 特有的變數(還有一種是外部變數,接受外部引數的格式是%1 -%9 共9個變數),只有在批處理裡面才寫 兩個 %% 號表示變數,cmd中只用 一個 % 號。反正只要你在批處理檔案裡面用 for,變數就用 %%。

例如批處理中的寫法

for %%i in (1 2 3 4 5 ) do echo %%i

為什麼批處理中用兩個 %%,其實是編譯器編譯的時候要遮蔽一個%

在cmd視窗中寫法

for %i in (1 2 3 4 5 ) do echo %i

3.現在說下外部變數,是系統制定的,只有9個,專門儲存外部引數的,就是執行批處理時加的引數。只有 %1 %2 %3 %4 ...... %9

例如 @echo off

echo %1

echo %2

echo %3

echo %4

將上面的**複製到記事本。儲存格式為 bat

現在怎樣傳遞引數給這個批處理,如下

在開始》執行 裡面輸入 cmd 確定

在彈出來的視窗中 輸入 上面 批處理檔案 的 完全路徑名,然後就加要傳遞的引數了 例如 c:\text.bat aaaa bbbb cccc dddd eeeee

上面 aaaa bbbb cccc dddd eeeee

就是傳遞給 批處理 「引數」這些引數 會儲存在 %1至 %9 這9個變數名,最多隻能儲存 9 個。執行下就知道了,上面批處理檔案中 %1變數儲存的是aaaa

%2 儲存的是 bbbb

%3 儲存的是 cccc

%4 儲存的是 dddd

%5 是 eeee 上面沒有用到 %5變數

9樓:月下吹牛

%0為批處理本身的絕對路徑,%1為第一個引數,以此類推至%9。%%i在for裡面回用到,更多用法請for/?。set/a裡面%%為取餘數,a%%b為a除以b的餘數。

10樓:匿名使用者

看不懂也不要追問了。。。等下坐車回老家了。

@echo off

set a=789

echo %a%

pause

call :str 963

pause

for /l %%l (4,1,6) do (set /p=%%l

)pause

:str

echo %1

goto :eof

11樓:匿名使用者

%是直接用在cmd ui介面的。而%%是寫入cmd檔裡面的。2者效果一致,這是我的經驗。。請高手斧正

12樓:匿名使用者

for /f "delims= usebackq" %%i in ("*.*") do (someting)

echo %time:~0,5%

start cmd.exe

call %0

諸如此類。。

批處理命令中的%%n是什麼意思

13樓:

一般出現在for 迴圈中, 表示一個變數。

例如:for /l %%n in (1,1,5) do echo %%n

會依次顯示1,2,3,4,5

如果直接在命令列中就要改成%n

for /l %n in (1,1,5) do echo %n

14樓:匿名使用者

看整條語句,不過一般指變數n

批處理錯誤返回問題,批處理執行錯誤

你可以在每一條命令後用 連線一個處理出錯的命令嘛,至於是讓它終止還是繼續執行後續命令自己去編 補充 既然不想另存一個配置檔案,那就列在批處理最下方,待批處理 安排就緒,再定skip n中的n 即倒數第31行在批處理中的行數 類似如下形式 當然你可以不用 而根據 errorlevel 用if分別作不同...

批處理問題

總得來說,以後寫批處理的時候一定要注意,千萬不要將批處理儲存為跟系統自身的命令一樣,也不要在批處理中寫有可能呼叫自身檔名的命令。你第一次說會執行很多次,估計是你把 上面的 儲存為1.bat了 在批處理中,並不是用來拼接字串的,它的作用是用來分隔命令的,也就是說你的 set a b a 就造價於以下兩...

xp自動批處理的設計

你可以檢視我一個回答貼,那裡我提供了一個批處理的關機工具,只有在你插入特定u盤的情況下,電腦不會關機,否則會時間隨機性的關機。效果還是不錯的。修改裡面引數 可以設定固定時間的關機。set ws createobject wscript.shell ws.run cmd c c date comput...