BATCH 返回包含子字符串的字符串

BATCH 返回包含子字符串的字符串

因此,我目前正在编写一个批处理脚本,该脚本将根据文件夹名称生成一个文件。我遇到的主要问题是,当路径中包含某个子字符串时,它会返回路径中的字符串。详细说明:我目前正在查看的路径:

someOtherFolders\Project_Banana\05_Processing\05_Logs

现在我需要获取的是“Project_Banana”。此字符串唯一固定的一点是它以“Project_”开头,但文件夹结构中的其他所有内容都可以区分(在本例中是实际的项目名称“Banana”,文件夹位于路径中的位置等)。

我发现的唯一东西与 findstr 相关并且只会返回 true 或 false,但这不是我想要的。

答案1

下面是使用批处理脚本的一个很好的起点为了循环简单地根据您的问题重复路径示例并使用批处理变量子串相应地。您可以轻松地将ECHO循环内的命令替换为目录命令列出目录(如果您需要的话);只需TOKEN相应地调整数字并进行测试即可。您可以将 替换ECHO !str!为脚本需要处理的任何其他命令。

批处理脚本 1

@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /F "TOKENS=2 DELIMS=\" %%F IN ('ECHO someOtherFolders\Project_Banana\05_Processing\05_Logs') DO (
    SET prjStr=%%~F 
    SET str=!prjStr:Project_=!
    ECHO !str! 
)

GOTO EOF

结果

Banana

批处理脚本 2

@ECHO ON

SET SRC1=C:\Users
SET SRC2=Documents

FOR /D %%X IN ("%SRC1%\*") DO FOR /D %%Y IN ("%%X\%SRC2%\*") DO ECHO %%~Y
GOTO EOF

可能有帮助

@ECHO ON

::SETLOCAL ENABLEDELAYEDEXPANSION
SET DIR=C:\Users
FOR /F %%F IN ('DIR /B /AD "%DIR%"') DO (
    SET fldName=%%~F
    SET SRC1=C:\Users\%fldName%
    SET SRC2=Documents
FOR /D %%X IN ("%SRC1%") DO FOR /D %%Y IN ("%%X\%SRC2%\*") DO ECHO %%~FPY
)
GOTO EOF

更多资源

相关内容