我正在Windows上的PATH变量中添加文件路径。在某些情况下,现有的PATH似乎以分号结尾,有时不是。因此,在添加路径之前,我必须进行检查,否则可能会以带有两个分号的PATH字符串结尾。由于某种原因,我不理解;在您的PATH中会产生问题。现在的问题是:如何检查字符串是否以分号结尾?例如,我尝试过:
set test_1=bla;
set test_2=%test_1:~-1%
if %test_2% EQU ^; echo hello
但是如果test_2包含分号,那将不起作用。
答案 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
应该扩展哪些变量。