批處理腳本 - 輸入/輸出
你好,未來的編程師們!今天,我們將進入批處理腳本這個迷人的世界,聚焦於輸入和輸出操作。作為你們友好的鄰居計算機老師,我很興奮能夠帶領你們踏上這次旅程。如果你從未寫過一行代碼,別擔心——我們會從基礎開始,逐步學習。所以,拿起你喜歡的飲料,讓我們開始吧!
了解批處理腳本中的輸入和輸出
在我們深入細節之前,讓我們先來討論一下在批處理腳本的語境中,輸入和輸出意味著什麼。
- 輸入 是指進入你的腳本的信息。這就像是在給你的程序喂數據。
- 輸出 是你的腳本產生或顯示的內容。這是你的腳本工作的結果。
把它想象成廚房:輸入是你用的食材,輸出是你創造的美味佳肴!
基本輸入:SET /P 指令
讓我們從批處理腳本中最常見的獲取輸入的方法開始:SET /P 指令。這個指令允許我們提示用戶輸入並將其存儲在變量中。
@echo off
SET /P name=你的名字是什麼?
echo 你好,%name%!歡迎來到批處理腳本的世界!
pause
在這個例子中:
-
@echo off
防止命令在屏幕上顯示。 -
SET /P name=你的名字是什麼?
提示用戶輸入他們的名字並將其存儲在name
變量中。 -
echo 你好,%name%!
使用輸入的名字顯示問候。 -
pause
保持窗口打開,以便你可以看到結果。
嘗試運行這個腳本。這就像和你的計算機進行一場小對話!
基本輸出:ECHO 指令
我們已經看到了 ECHO 指令的使用。它是批處理腳本中顯示輸出的主要方式。讓我們進一步探索它:
@echo off
echo 這是一個簡單的輸出。
echo.
echo 這一行上面有一個空行。
echo "引號"會按原樣顯示。
echo.
echo 當前日期: %date%
echo 當前時間: %time%
pause
這裡發生了什麼:
-
echo.
打印一個空行。 - 我們可以使用 ECHO 來顯示文本、變量和甚至系統信息,如日期和時間。
轉向輸出(Stdout 和 Stderr)
現在,讓我們來討論一下輸出的轉向。在批處理腳本中,我們有两种主要類型的輸出:
- 标准输出(stdout):命令的正常输出。
- 标准错误(stderr):错误信息或诊断输出。
我們可以使用 >
和 >>
操作符將這些輸出重定向到文件。
轉向标准输出
@echo off
echo 這將被保存到一個文件 > output.txt
echo 這將被追加到文件 >> output.txt
type output.txt
pause
在這個腳本中:
-
>
創建(或覆蓋)一個文件並將輸出寫入其中。 -
>>
將輸出追加到現有的文件(如果文件不存在,則創建它)。 -
type output.txt
顯示文件的內容。
轉向标准错误
要重定向错误信息,我們使用 2>
而不是單獨的 >
。
@echo off
dir 不存在的文件夹 2> error.txt
type error.txt
pause
這個腳本嘗試列出一個不存在的文件夹,並將错误信息重定向到一個文件。
轉向 stdout 和 stderr
我們可以将两种类型的输出重定向到同一個文件:
@echo off
dir 2>&1 > output.txt
type output.txt
pause
在這裡,2>&1
意味著“將 stderr 重定向到與 stdout 相同的地方”。
抑制程序输出
有時候,你可能希望在不顯示輸出的情況下運行一個命令。我們可以通过將輸出重定向到一個特殊的設備 NUL 來做到這點。
@echo off
echo 這將被顯示
echo 這將不會被顯示 > NUL
dir > NUL
echo 目錄列表被抑制
pause
在這個腳本中,第二個 ECHO 指令和 DIR 指令的輸出被抑制。
高级輸入/輸出技巧
現在我們已經掌握了基礎知識,讓我們來看看一些更高级的技巧。
使用 CHOICE 獲取用戶輸入
CHOICE 指令提供了一種更結構化的方式來獲取用戶輸入:
@echo off
echo 你喜歡編程嗎?
choice /c YN /m "輸入 Y 表示是或 N 表示否"
if errorlevel 2 goto No
if errorlevel 1 goto Yes
:Yes
echo 很好!讓我們學習更多!
goto End
:No
echo 不要擔心,你很快就會喜歡上的!
:End
pause
這個腳本:
- 提供给用戶一個是/否問題。
- 使用
/c YN
指定有效的選項(Y 或 N)。 - 使用
/m
顯示一條自定義消息。 - 使用
if errorlevel
檢查用戶的選擇並跳转到相应的標籤。
從文件讀取
我們也可以從文件中讀取輸入:
@echo off
for /f "delims=" %%a in (input.txt) do (
echo 讀取的行: %%a
)
pause
這個腳本從 input.txt
中讀取每一行並顯示它。
寫入多個文件
讓我們創建一個腳本,將輸出寫入多個文件:
@echo off
echo 文件 1 內容 > file1.txt
echo 文件 2 內容 > file2.txt
echo 文件 3 內容 > file3.txt
echo 文件成功創建!
pause
這創建了三個分別含有不同內容的文件。
輸入/輸出方法總結
讓我們總結一下我們學到的輸入/輸出方法:
方法 | 描述 | 示例 |
---|---|---|
SET /P | 獲取用戶輸入 | SET /P name=輸入名字: |
ECHO | 顯示輸出 | echo 你好,世界! |
> | 將輸出重定向到文件 | echo 文本 > file.txt |
>> | 將輸出追加到文件 | echo 更多文本 >> file.txt |
2> | 將错误輸出重定向 | command 2> error.txt |
2>&1 | 將 stdout 和 stderr 重定向 | command > output.txt 2>&1 |
NUL | 抑制輸出 | command > NUL |
CHOICE | 結構化的用戶輸入 | choice /c YN /m "是或否?" |
FOR /F | 從文件讀取 | for /f "delims=" %%a in (file.txt) do ... |
這就是了,各位!我們一起走过了批處理腳本的輸入和輸出。記住,掌握這些概念關鍵在於練習。嘗試寫你自己的腳本,嘗試不同的命令,不要害怕犯錯誤——這是我們學習的方式!
正如你們的老計算機老師總是說的,“在編程中,每一個錯誤都是一個新的學習機會。”所以,勇往直前,寫一些批處理腳本,願你的輸出總是如你所願!
Credits: Image by storyset