echo "enter first number:"
read first_num
變得 組/ P FIRST_NUM = 「輸入第一個數字」
while [ first_num && second_num != 999 ]
沒有WHILE - 具有到有線它。認爲俱樂部和岩石。
:loop
if %first_num%==999 goto endloop
if %second_num%==999 goto endloop
...
goto loop
:endloop
:name
是一個標籤,%var%
檢索的var
內容 - 始終是一個字符串引號如果字符串包含空格。
if [ second_num != 0 ]; then
翻譯是
if NOT %second_num%==0 (...things...) else (...other things...)
或,當然
if %second_num%==0 (...other things...) else (...things...)
夸克:(多箇中的一個):在相同的物理線路必須發生作爲IF
第一開括號並且ELSE
必須與on-true statemet序列的)
位於同一條物理線路上。
echo first_num "/" second_num "=" $((first_num/second_ num)) >> file.txt
在回波
set /a result=(first_num/second_ num)
OR
set /a result=(%first_num%/%second_ num%)
SET /A
不能做一個計算適用的算術表達式的結果 - 後添加和多個C形語義
then
echo %first_num%/%second_num% = %result% >> file.txt
純粹將元素串在一起。
接下來有一個小問題。在解析過程中,任何%var%都被其PARSE-TIME值替換,並執行該行。因此,上面的ECHO
行將顯示IF語句輸入時的值,而不是計算後的值。
兩種治療方法:
您可以使用SETLOCAL ENABLEDELATEDEXPANSION
切換翻譯模式。在DELAYEDEXPANSION模式下,!var!
可用於檢索var
的RUN-TIME值。 A SETLOCAL
終止於ENDLOCAL
或在相同的上下文中達到END-OF-FILE。在SETLOCAL
被ENDLOCAL
撤消之後,任何環境都會發生變化,這就是爲什麼在@echo off
之後通常會立即執行環境 - 保持環境清潔。
第二種治療方法是使用子程序。 CALL :SUB
(結腸的意思是「內部的子程序 - 開始標記是在該批處理文件」省略它的意思是「這是一個外部可執行」。)該呼叫創建了一個新的上下文,複製當時存在的環境變量,所以
:sub
echo %first_num%/%second_num% = %result% >> file.txt
goto :eof
當執行
CALL :SUB
時,
將顯示環境中的變量。 注意GOTO :EOF
(冒號是REQUIRED
手段「去實體最終文件的」 - 標籤EOF
應該宣佈...
(小心也流過正常放置在批處理文件中結束子程序一種明智GOTO :EOF
確保流通不會發生......
#Mod 5 of numbers 1-100:
的意見指示燈正式REM
rem Mod 5 of numbers 1-100:
但
::Mod 5 of numbers 1-100:
經常使用,因爲它更容易一些,但因爲它實際上是一個標籤的濫用,它實際上是一個標籤,標籤不能在複合語句中使用,你不能使用它的IF ... (...) else (...)
或FOR...DO (...)
for i in {1...100}
括號內變得
for /L %%i in (1,1,100) do (
的metavariable %%i
是大小寫敏感的和單個字符。在一個FOR /L
元件被(開始,步驟,結束) - 見從提示FOR /?
(或通常command /?
從提示),用於docco ...
result=$((i % 5))
變得
set /a result=%%i %% 5
/a
因爲RHS是要評估的算術表達式; %% 5因爲%
逸出%
,空間是不相關的,並且所述處理器需要知道的是,MOD運算符%
正在被使用,不%5
(第五命令行參數)
int sum=0
沒有這樣的東西作爲類型;所有的環境變量是字符串,只能由set /a
聲明解釋爲整數
如此 - 這是對所有有它...
'SET/P'接收輸入; 'SET/A'確實數學; 「IF」和「FOR」可用; 'CALL'可以讓你僞造一個代碼塊。詢問時你有什麼樣的答案? – Jon
使用真正的腳本語言。例如bash或sh。甚至更好,Python。但cmd.exe糟透了。堆棧溢出不是一項移植服務。 –