проверить имя файла, если включить подстроку - PullRequest
0 голосов
/ 03 октября 2018

Я просматриваю каталог и проверяю все файлы с помощью цикла for.

for %%f in (*.doc ) do (
  echo full name: %%f
  echo name without suffix: %%~nxf
)

Например, для таких файлов, как этот "1234-Important.doc", мне нужно как-то распознать, что находится между '-' и '.doc'.и установите это значение в флаге переменной для следующей обработки.

IF [$flag] == [*"-important"*] (
  echo important
)

Есть ли у вас какие-либо предложения, как это сделать?Может быть, использовать какое-либо регулярное выражение для имени файла?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Вот пример, который ищет файлы, содержащие строку.Переменная STR может быть установлена ​​на то, что ищется.

SET "STR=*-important*"
FOR /F "delims=" %%f IN ('DIR /B "%STR%" 2^>NUL') DO (
    ECHO %%~f
)
0 голосов
/ 03 октября 2018

Следующий код работает, если в имени файла только один дефис.Он использует вложенную команду 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
)
0 голосов
/ 03 октября 2018

Вот пример, где также используется имя файла:

forfiles /M *important* /C "cmd /c echo @file : important"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...