windows - 根据文件日期移动文件夹中的文件

标签 windows date batch-file cmd directory

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

感谢任何帮助。

最佳答案

如果输出正常,试试这个并删除 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
)

关于windows - 根据文件日期移动文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17019278/

相关文章:

c++ - 从调用堆栈中获取函数指针

c# - 检索最后一列在 excel 中具有值

java - 将 iCalendar DateTime 转换为 Java Date 对象

sql - 日期不是指定的格式

batch-file - 批命令输入菜单

batch-file - 通过 .bat 文件从 .txt 文件复制到剪贴板

windows - 嵌套批处理 for 循环

java - 使用 Java 查找用户独立的 TEMP 目录

windows - vue awesome swiper 在 Windows 上安装失败

php - 与数据库中的多个日期和时间进行比较