批处理脚本 - 字符串

批处理脚本中的字符串简介

你好,有抱负的程序员们!今天,我们将深入批处理脚本中字符串的奇妙世界。作为你友好的邻里计算机老师,我很兴奋能引导你完成这次旅行。如果你以前从未写过一行代码,也不要担心——我们将从头开始!

Batch Script - Strings

简单来说,字符串就是字符的序列。它可以是单词、句子,甚至是整个段落。在批处理脚本中,我们经常使用字符串来显示消息、存储信息以及操作文本。

基本字符串操作

显示字符串

让我们从最基本的操作开始——显示字符串。在批处理中,我们使用 echo 命令来完成这个操作。

@echo off
echo Hello, World!
pause

将这个保存为 hello.bat 并运行它。你将在屏幕上看到 "Hello, World!"。在开头使用 @echo off 是个好习惯,可以使你的脚本输出更整洁,而 pause 在结尾可以保持窗口打开,以便你能看到结果。

将字符串存储在变量中

现在,让我们将我们的字符串存储在变量中:

@echo off
set message=Hello, Batch scripting!
echo %message%
pause

在这里,我们使用 set 命令将我们的字符串存储在名为 message 的变量中。要使用这个变量,我们需要在它周围加上百分号。

字符串连接

将字符串连接在一起(连接)是一个常见的操作。在批处理中,这就像把它们并排放在一起一样简单:

@echo off
set firstName=John
set lastName=Doe
set fullName=%firstName% %lastName%
echo Full name: %fullName%
pause

这个脚本将输出 "Full name: John Doe"。注意我们在 %firstName%%lastName% 之间加了一个空格来分隔它们。

处理用户输入

让我们通过获取用户的输入来使我们的脚本具有交互性:

@echo off
set /p name=What's your name?
echo Nice to meet you, %name%!
pause

使用 set 命令的 /p 开关允许我们提示用户输入。尝试运行这个脚本并输入你的名字!

字符串操作

提取子字符串

批处理允许我们使用 %variable:~start,length% 语法来提取字符串的一部分:

@echo off
set message=Hello, World!
echo %message:~0,5%
echo %message:~7,5%
pause

这将输出:

Hello
World

第一个 echo 从位置 0 提取到位置 5 的字符,第二个从位置 7 提取到之后的 5 个字符。

字符串替换

我们也可以替换字符串的一部分:

@echo off
set phrase=The quick brown fox jumps over the lazy dog
echo %phrase:fox=cat%
pause

这将把 "fox" 替换为 "cat"。

高级字符串操作

字符串长度

批处理没有内置的获取字符串长度的函数,但我们可以使用一个巧妙的方法:

@echo off
set string=Hello, World!
call :strLen string strlen
echo The length of "%string%" is %strlen%
pause
goto :eof

:strLen
setlocal enabledelayedexpansion
set "s=!%~1!"
set "len=0"
for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!s:~%%N,1!" neq "" (
set /a "len+=%%N"
set "s=!s:~%%N!"
)
)
endlocal & set %~2=%len%
goto :eof

这个脚本定义了一个函数 :strLen,用于计算字符串的长度。它有点复杂,但它展示了我们如何在批处理中创建强大的工具。

大小写转换

批处理没有内置的大小写转换功能,但我们可以使用 for 命令的 /L 选项来实现:

@echo off
set string=Hello, World!
call :toUpper string result
echo Upper case: %result%
call :toLower string result
echo Lower case: %result%
pause
goto :eof

:toUpper
for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set %2=%%%2:%%a=%%a%%%
goto :eof

:toLower
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set %2=%%%2:%%A=%%a%%%
goto :eof

这个脚本定义了两个函数::toUpper:toLower,用于大小写转换。

结论

恭喜你!你刚刚迈出了在批处理脚本中字符串操作的第一步。记住,熟能生巧,所以不要害怕尝试这些概念。尝试结合我们今天学到的不同技术,创建你自己的独特脚本。

在我们结束之前,这里有一个表格总结了我们所涵盖的字符串操作:

操作 语法 示例
显示字符串 echo string echo Hello, World!
存储字符串 set variable=string set message=Hello
连接 set result=%string1% %string2% set fullName=%firstName% %lastName%
用户输入 set /p variable=prompt set /p name=What's your name?
提取子字符串 %variable:~start,length% %message:~0,5%
替换 %variable:old=new% %phrase:fox=cat%

继续编码,继续学习,最重要的是,在批处理脚本中尽情享受乐趣!

Credits: Image by storyset