batch-file - 检查批处理文件中的空字符串

标签 batch-file

我正在学习批处理脚本,我复制了如何检查空的示例:

@echo off 
SET a= 
SET b=Hello 
if [%a%]==[] echo "String A is empty" 
if [%b%]==[] echo "String B is empty "
但我收到这样的错误:
D:\Projects\Temp\BatchLearning>Script.bat
]==[] was unexpected at this time.
什么问题?为什么这是在指南中。过去有用吗?来自 here 的示例.
更新:
我删除了第 2、3 和 5(最后)行末尾的一些空格,现在一切都按预期工作,这是怎么回事?

最佳答案

环境变量不能有空字符串。环境变量根本没有定义给环境变量。

命令 IF 在命令提示符窗口中运行时输出的帮助解释了语法:

if defined Variable ...
if not defined Variable ...

只要在启动 cmd.exe 或运行批处理文件时默认启用命令扩展,这就会起作用。
@echo off
SET "a="
SET "b=Hello"
if not defined a echo String A is empty.
if not defined b echo String B is empty.

方括号对命令 IF 或 Windows 命令处理器没有意义。但是双引号有一个,因为它们定义了一个参数字符串。所以也有可能使用:
@echo off
SET "a="
SET "b=Hello"
if "%a%" == "" echo String A is empty.
if "%b%" == "" echo String B is empty.

但请注意,在 "a 的字符串值中的双引号字符 b 在执行解析的命令行之前由命令处理器扩展,如此处使用 %a%%b% 所做的那样,会导致命令行的语法错误。

另请阅读有关 Why is no string output with 'echo %var%' after using 'set var = text' on command line? 为什么建议使用语法 set "Variable=Value" 以避免将不显示尾随空格的值分配给环境变量的答案。

关于batch-file - 检查批处理文件中的空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52060842/

相关文章:

powershell - 以全屏模式打开 Chrome 进程,然后稍后关闭该进程。

batch-file - 使用带通配符的 del 方法,排除特定文件

java - 根据本月创建一个目录并将dirs移动到其中

batch-file - 如何在文本文件中查找字符串并在 Windows 批处理文件中打印匹配项?

batch-file - 如何创建音频名称和长度的bat文件

windows - 聚焦一个批量启动的应用程序

javascript - 将凭据发送到登录网页

windows - 使用ansible在Windows中运行批处理文件

windows - 使用命令行创建在特定用户登录时运行的计划任务

batch-file - 如何使用批处理脚本从文本文件中删除字符串?