3

我正在尝试将 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 部分转换为变量,然后进一步拆分它,但我现在被卡住了。

任何帮助表示赞赏。

4

2 回答 2

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
)
于 2013-06-10T08:59:17.903 回答
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 年之前的文件日期执行此操作。

于 2013-06-10T17:25:53.527 回答