如何使用delims动态拆分字符串;

时间:2017-05-09 09:03:25

标签: batch-file

我希望使用动态破坏字符串;作为分隔符 C:\ ProgramData \ Oracle \ Java \ javapath; C:\ Program Files(x86)\ RSA SecurID Token Common; C:\ windows \ system32; C:\ windows; C:\ windows \ System32 \ Wbem; < / em>的

然后查找路径是否已存在。如果C:\ windows \ system32已经在字符串中,那么它应该引发一个标志。

请帮忙

2 个答案:

答案 0 :(得分:1)

一个简单的 not bulletproof 方法可能如下所示:

@ECHO OFF
SET "FLAG="
FOR %%A IN ("%PATH:;=";"%") DO IF /I %%A=="%SystemRoot%\system32" SET "FLAG=T"
IF DEFINED FLAG ECHO The location exists as an entry in %%PATH%%
TIMEOUT -1

如果您没有;"的路径,它将正常工作。

编辑
如果您不幸使用双引号输入条目,则可以使用稍微不同的方法,将每个分号替换为换行符:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "FLAG="
SET LF=^
%FLAG%
%FLAG%
FOR /F "DELIMS=" %%A IN ("%PATH:;=!LF!%"
) DO IF /I "%%A"=="%SystemRoot%\system32" SET "FLAG=T"
IF DEFINED FLAG ECHO The location exists as an entry in %%PATH%%
TIMEOUT -1

答案 1 :(得分:0)

补充先前的回答,也是

@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%a in (^"!path:^;^=^
% Do NOT remove this line %
!^") do IF /I "%%a"=="%SystemRoot%\system32" SET "FLAG=T"
IF DEFINED FLAG ECHO The location exists as an entry in %%PATH%%

这可以处理带引号的路径。