我浏览目录并通过循环检查所有文件。
for %%f in (*.doc ) do (
echo full name: %%f
echo name without suffix: %%~nxf
)
例如类似“ 1234-important.doc”的文件 我需要以某种方式识别“-”和“ .doc”之间的内容,并将此值设置为变量标志以进行下一步处理。
IF [$flag] == [*"-important"*] (
echo important
)
您对此有何建议? 也许在文件名上使用一些正则表达式?
答案 0 :(得分:2)
如果文件名中只有一个连字符,则以下代码有效。它使用嵌套的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
命令检查基本文件名是否以您要查找的字符串结尾。然后使用条件执行来确定执行哪个回显命令。如果前一个命令成功执行,则使用双“&”号执行。如果先前的命令不成功,则使用双管道执行。
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
)
答案 1 :(得分:0)
下面是一个也使用文件名的示例:
forfiles /M *important* /C "cmd /c echo @file : important"
答案 2 :(得分:0)
这里是搜索包含字符串的文件的示例。 STR
变量可以设置为正在寻找的任何变量。
SET "STR=*-important*"
FOR /F "delims=" %%f IN ('DIR /B "%STR%" 2^>NUL') DO (
ECHO %%~f
)