Batch file 如果包含子字符串,请检查文件名

Batch file 如果包含子字符串,请检查文件名,batch-file,cmd,Batch File,Cmd,我浏览目录并通过for循环检查所有文件 for %%f in (*.doc ) do ( echo full name: %%f echo name without suffix: %%~nxf ) 例如像“1234 important.doc”这样的文件 我需要以某种方式识别'-'和'.doc'之间的内容,并将此值设置为变量标志,以便下一个处理 IF [$flag] == [*"-important"*] ( echo important ) 你对如何做有什么建议吗? 可能在文

我浏览目录并通过for循环检查所有文件

for %%f in (*.doc ) do (
  echo full name: %%f
  echo name without suffix: %%~nxf
)
例如像“1234 important.doc”这样的文件 我需要以某种方式识别'-'和'.doc'之间的内容,并将此值设置为变量标志,以便下一个处理

IF [$flag] == [*"-important"*] (
  echo important
)
你对如何做有什么建议吗?
可能在文件名上使用一些正则表达式?

这里是一个使用文件名的示例:

forfiles /M *important* /C "cmd /c echo @file : important"

下面是一个也使用文件名的示例:

forfiles /M *important* /C "cmd /c echo @file : important"

下面是一个搜索包含字符串的文件的示例。
STR
变量可以设置为正在查找的任何值

SET "STR=*-important*"
FOR /F "delims=" %%f IN ('DIR /B "%STR%" 2^>NUL') DO (
    ECHO %%~f
)

下面是一个搜索包含字符串的文件的示例。
STR
变量可以设置为正在查找的任何值

SET "STR=*-important*"
FOR /F "delims=" %%f IN ('DIR /B "%STR%" 2^>NUL') DO (
    ECHO %%~f
)

如果文件名中只有一个连字符,则以下代码有效。它使用嵌套FOR命令以连字符分隔基本文件名

@echo off
for %%F in (*.doc ) do (
    echo full name: %%F
    echo name without suffix: %%~nF
    for /F "tokens=2 delims=-" %%G IN ("%%~nF") DO (
        IF /I "%%G"=="important" (echo File is important) else Echo File is not important
    )
)
第二组代码使用
FINDSTR
命令检查基本文件名是否以要查找的字符串结尾。然后使用条件执行来确定执行哪个echo命令。如果上一个命令成功,则使用双符号AND执行。如果上一个命令未成功,则使用双管道执行

for %%F in (*.doc ) do (
    set "flag="
    echo full name: %%F
    echo name without suffix: %%~nF
    echo %%~nF|findstr /E /I "important" >nul 2>&1 &&echo File is Important || echo file is not important
)

如果文件名中只有一个连字符,则以下代码有效。它使用嵌套FOR命令以连字符分隔基本文件名

@echo off
for %%F in (*.doc ) do (
    echo full name: %%F
    echo name without suffix: %%~nF
    for /F "tokens=2 delims=-" %%G IN ("%%~nF") DO (
        IF /I "%%G"=="important" (echo File is important) else Echo File is not important
    )
)
第二组代码使用
FINDSTR
命令检查基本文件名是否以要查找的字符串结尾。然后使用条件执行来确定执行哪个echo命令。如果上一个命令成功,则使用双符号AND执行。如果上一个命令未成功,则使用双管道执行

for %%F in (*.doc ) do (
    set "flag="
    echo full name: %%F
    echo name without suffix: %%~nF
    echo %%~nF|findstr /E /I "important" >nul 2>&1 &&echo File is Important || echo file is not important
)

我认为
forfiles
功能正是您所需要的。为什么不在(“*-important*.doc”)中为%%f使用
是否…
只查找和处理文件名中包含字符串
-important
的文档文件?@Mofi,因为将来会有多个标志,我希望创建通用脚本来检查文件的这一部分name@wdfeww,但您可以轻松地将它们添加到
FOR
命令中
对于(*-important.doc*-classified.doc*-sensitive.doc)中的%%f,请执行……
我认为
FOR files
功能正是您所需要的。您为什么不在(“*-important*.doc”)中对%%f使用
是否…
只查找和处理文件名中包含字符串
-important
的文档文件?@Mofi,因为将来会有多个标志,我希望创建通用脚本来检查文件的这一部分name@wdfeww,但您可以轻松地将它们添加到
FOR
命令中<代码>对于(*-important.doc*-classified.doc*-sensitive.doc)中的%%f,请执行……