2014-03-06 31 views
2

任何人都可以幫我創建一個批處理文件將*基於月份&今年修改日期的X文件夾來夾YYYY_MM .xml文件xml文件?批處理文件繼續前進修飾YYYY_MM到文件夾日期基於月份及年份文件

我不知道該把什麼放在循環中。

@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

試試這個[否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" 
    ) 
    ) 
+0

謝謝,我總是忘記這種任務的目錄創建部分。 robocopy的用法只是爲了避免在本地化windows版本中使用不同日期格式的常見問題。但是,正如你所展示的那樣,「不需要」只是一個方便的選擇。 –

+0

'%%〜tF'也是本地化的,作爲一個通用的解決方案是不可靠的,因爲格式可以在任何給定的計算機上改變。使用Robocopy可能是更好的方法。 – foxidrive

+0

哇,這就像一個魅力。非常感謝! – user3387454

0

對於任何人誰也想搬到子目錄,增加r3ap3r的答案,這裏有一個解決方案。基本上只需添加另一個for循環與/ d標誌來循環通過子目錄:

@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" 
) 
) 
相關問題