基于Month&amp ;;批量文件移动文件使用YYYY_MM将年份修改为文件夹

时间:2014-03-06 09:48:42

标签: batch-file file-io

任何人都可以帮我创建批处理文件,将* .xml文件从X文件夹移动到YYYY_MM文件夹,基于Month&年日期修改后的xml文件?

我不确定要把什么放在循环中。

@echo off

echo Date is %Date%
dir /od/b "C:\Users\*.xml" > test.log
for /F %%f in (test.log) DO
(

)

起初我想把set var = %%~tf放在循环中,以便稍后我可以使用var上的子字符串来获取月份和年份,我可以根据它将xml文件移动到YYYY_MM文件夹,但似乎是不工作。

2 个答案:

答案 0 :(得分:2)

试试这个[不需要 ROBOCOPY ]:

 @echo off
    set "src=C:\test"
    set "dest=C:\test"
    for %%F in ("%src%\*") do (
      for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tF") do (
        if not exist "%dest%\%%C_%%A" mkdir "%dest%\%%C_%%A"
        move "%%~fF" "%dest%\%%C_%%A"
      )
    )

答案 1 :(得分:0)

对于任何想要移动子目录的人,添加到r3ap3r的答案,这是一个解决方案。基本上只需使用/ d标志添加另一个for循环来遍历子目录:

@echo off
set "src=..\"
set "dest=..\archive"
for %%F in ("%src%\*") do (
  for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tF") do (
    if not exist "%dest%\%%C_%%A" mkdir "%dest%\%%C_%%A"
    move "%%~fF" "%dest%\%%C_%%A"
  )
)

for /d %%D in ("%src%\*") do (
  for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tD") do (
    if not exist "%dest%\%%C_%%A" mkdir "%dest%\%%C_%%A"
    move "%%~fD" "%dest%\%%C_%%A"
  )
)