检查字符串是否以分号结尾



我正在向Windows上的PATH变量添加文件路径。似乎在某些情况下,现有的 PATH 以分号结尾,有时不是。因此,在添加路径之前,我必须检查这一点,否则我最终可能会得到一个有两个分号的 PATH 字符串。出于某种原因我不明白,有;;在您的路径中会产生问题。现在的问题是:如何检查字符串是否以分号结尾?例如,我尝试了:

set test_1=bla;
set test_2=%test_1:~-1%
if %test_2% EQU ^; echo hello

但是,如果test_2包含分号,则不起作用。

你为什么要转义分号?我建议您通过打开cmd控制台并键入if /?来运行帮助

set "test_1=bla;"
if "%test_1:~-1%"==";" echo hello

我们将变量和匹配的项目括在双引号中,以消除任何可能的空格。所以基本上你现在正在匹配:

if ";"==";"

这完全是匹配的。

然后,作为旁注。您有可能在循环中执行此操作。如果是这种情况,您需要从cmd控制台enabledelayedexpansion有关setlocal /?的更多信息。

假设somefilename.txt具有以下文本:

blah;
blahblah
bla;
@echo off
setlocal enabledelayedexpansion
for /f %%I in (somefilename.txt) do ( 
set "test_1=%%I"
if "!test_1:~-1!"==";" echo hello
)

将回响:

hello
hello

因为其中只有 2 个项目有;。 但请注意将%替换为!以告诉delayedexpansion应该扩展哪些变量。

相关内容

  • 没有找到相关文章

最新更新