批量转移文件夹名称

时间:2019-06-13 15:15:32

标签: batch-file

我需要批量查找并从其文件夹名称(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 :(得分:0)

第二次解析您的结果(用-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

通配符*的意思是“任意数量的字符”,但是您需要一个已知的数字,因此必须使用?,即“完全是一个字符”

答案 1 :(得分:0)

稍有不同的实现,其中包括检查,以查找更好的目录名称匹配模式。

@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