我正在尝试将Windows服务器上的数千个文件排序到多个文件夹中。文件名是Extract_YYYYMMDDHHMISS.dat,其中YYYY是年份,MM是月份,DD是日期。我想将这些文件移动到我已定义的文件夹层次结构中:
Archive\2013\01\01
Archive\2013\01\02
Archive\2013\01\03
...
Archive\2013\02\01
等等。
@echo off
setlocal enabledelayedexpansion
for /f %%f in ('dir Extract_* /b') do (
echo %%f
echo %%~15,8f
)
endlocal
我正在尝试使用for循环和字符串格式化将YYYYMMDD部分转换为变量,然后进一步拆分它,但我现在卡住了。
任何帮助表示感谢。
答案 0 :(得分:4)
如果输出正常,请尝试此操作并删除echo
:
@echo off &setlocal
for %%i in (Extract_*.dat) do (
set "fname=%%~i"
setlocal enabledelayedexpansion
set "name=!fname:*_=!"
set "year=!name:~0,4!"
set "month=!name:~4,2!"
set "day=!name:~6,2!"
echo move "!fname!" "Archive\!year!\!month!\!day!"
endlocal
)
答案 1 :(得分:3)
您可以使用“YYYY”==“20NN”模式来提取核心文件名:
@echo off &setlocal
set name=Extract_Full_Data_Over_Time_20130101121314.dat
set core=%name:*_2=2%
echo %core%
20130101121314.dat
显然,您不应该在2000年之前使用文件日期。