我正在向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
应该扩展哪些变量。