我需要批量查找并从其文件夹名称(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
请帮助谢谢!
答案 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)
稍有不同的实现,其中包括findstr检查,以查找更好的目录名称匹配模式。
@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