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

时间:2018-08-30 12:25:59

标签: batch-file cmd compare

我正在Windows上的PATH变量中添加文件路径。在某些情况下,现有的PATH似乎以分号结尾,有时不是。因此,在添加路径之前,我必须进行检查,否则可能会以带有两个分号的PATH字符串结尾。由于某种原因,我不理解;在您的PATH中会产生问题。现在的问题是:如何检查字符串是否以分号结尾?例如,我尝试过:

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

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

1 个答案:

答案 0 :(得分:2)

您为什么要转义分号?我建议您通过打开cmd控制台并输入if /?

来运行帮助。
set "test_1=bla;"
if "%test_1:~-1%"==";" echo hello

我们将变量和匹配的项目用双引号引起来,以消除任何可能出现的空白。因此,基本上,您正在匹配:

if ";"==";"

完全匹配。

然后,作为补充说明。您有可能会循环执行此操作。在这种情况下,您需要enabledelayedexpansion来从cmd控制台进行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应该扩展哪些变量。