Пакетное изменение имени папки - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно сделать пакет, чтобы найти и получить некоторые слова из имени его папки (temp-yy-mm-dd), например, temp-19-01-01, тогда нужен результат 19-01-01 для другого использования!

@echo off
setlocal enabledelayedexpansion
for /f "usebackq tokens=*" %%i in (`dir temp-**-**-** /b /s /a:d `) do (
  echo %%i
  )
endlocal

Результат c:\temp\temp-19-01-01

Но мне нужно только от 19-01-01 до %% j

Пожалуйста, помогите с благодарностью!

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Немного другая реализация, включающая проверку для лучшего соответствия имени каталога.

@Echo Off
For /F "Delims=" %%A In ('Dir /B /S /A:D "temp-??-??-??" 2^> NUL ^|^
 FindStr /I /R "\\temp-[0-9][0-9]-[0-1][0-9]-[0-3][0-9]$"'
) Do For /F "Tokens=1,* Delims=-" %%B In ("%%~nxA") Do Echo(%%C
Pause
0 голосов
/ 13 июня 2019

проанализируйте ваш результат во второй раз (разделите на - и tokens=1,*, где * означает «возьми все остальное и больше не токенизируй»:

@echo off
setlocal enabledelayedexpansion
for /f "usebackq tokens=*" %%i in (`dir temp-??-??-?? /b /s /a:d `) do (
  echo %%i
  for /f "tokens=1,* delims=-" %%a in ("%%~ni") do echo %%b
  )
endlocal

Подстановочный знак * означает «любое количество символов», но вам нужно известное число, поэтому вы должны использовать ?, что означает «ровно один символ»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...