使用“排除”移动命令

时间:2017-03-15 10:27:09

标签: batch-file

我有文件夹树。

d:\ A \ AA \ AAA \

d:A \ AA \ BBB \

现在在AAA和BBB内部我再次拥有15-20个子文件夹,它们将在AAA和BBB中共享通用名称。 在该文件夹中,我有几个来自CSV和Excel的文件。

现在我想要做的是,我想选择每个文件并创建另一个以Systemdate作为名称的子文件夹,并在该日期文件夹中移动相应的文件。

所以现在新的文件夹结构将是。 d:\ A \ AA \ AAA \子文件夹\ 15032017 \ d:A \ AA \ BBB \子文件夹\ 15032017 \

现在我想要的是下次再次执行此脚本时它将跳过15032017文件夹并仅检查子文件夹中的文件

我尝试了这段代码,但卡住了。 (::注释为没有按预期工作)

如何排除使用SDate创建的检查文件夹(例如15th March文件夹为15032017

在下面添加我的脚本。按照要求!

@Echo Off
::Variable for folder path

for /r D:\A\ %%i in (*.xls) do SET "FPath=%%~dpi"

::FOR %%i IN ("%myh%") DO Set filedrive=%%~dpi

:: SDate=DAYMONTHYEAR FORMAT of Systemdate
set SDate=%date:~7,2%%date:~4,2%%date:~10,4%

::ROBOCOPY D:\Source D:\Dest * /MOV /XF *.xls

if not exist %FPath%\%SDate% mkdir %FPath%\%SDate%
move %FPath%\* %FPath%\%SDate%

set "FPath="
Echo Now %FPath%
::set "SDate="

1 个答案:

答案 0 :(得分:0)

只需在已处理的文件夹中创建一个文件作为此类事物的指示。这样,您只处理没有%SDate%文件夹 AND 的文件夹没有他们已经处理过的文件夹"信号文件:

::ROBOCOPY C:\Source C:\Dest * /MOV /XF *.LOG

if not exist %FPath%\%SDate% if not exist %FPath%\AlreadyProcessedFolder.txt (
   mkdir %FPath%\%SDate%
   move %FPath%\* %FPath%\%SDate%
   echo X > %FPath%\AlreadyProcessedFolder.txt
)

您也可以在信号文件中添加一些有用的信息,例如日期和时间。