Batch file 带排除的移动命令

Batch file 带排除的移动命令,batch-file,Batch File,我有一个文件夹树 d:\A\AA\AAA\ d:A\AA\BBB\ 现在在AAA和BBB中,我又有了15-20个子文件夹,它们将在AAA和BBB中共享公共名称。 在那个文件夹里,我有一些来自CSV和Excel的文件 现在我要做的是,我要选择每个文件,创建另一个子文件夹,并将Systemdate作为名称,然后在该日期文件夹中移动相应的文件 因此,现在将创建新的文件夹结构。 d:\A\AA\AAA\Subfolders\15032017\ d:A\AA\BBB\Subfolders\15032017

我有一个文件夹树

d:\A\AA\AAA\

d:A\AA\BBB\

现在在AAA和BBB中,我又有了15-20个子文件夹,它们将在AAA和BBB中共享公共名称。 在那个文件夹里,我有一些来自CSV和Excel的文件

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

因此,现在将创建新的文件夹结构。 d:\A\AA\AAA\Subfolders\15032017\ d:A\AA\BBB\Subfolders\15032017\

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

我试过这个密码,但被卡住了。(::注释为未按预期工作)

如何排除使用SDate创建的检查文件夹(例如-for
3月15日
文件夹为
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="

只要在已经处理过的文件夹中创建一个文件就可以了。这样,您只处理没有
%SDate%
文件夹且没有“已处理文件夹”信号文件的文件夹:

::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
)

您还可以在信号文件中输入一些有用的信息,如日期和时间。

for/r的
不可避免地会深入到新创建的子文件夹中,并且可能会有多个结果,其中集合将只返回最后一个结果,因此,您应该详细说明整个批处理的任务是什么。我需要创建一个脚本,它将每隔2小时检查是否在子文件夹中添加了新文件。如果有可用的文件,那么它将检查我们是否有日期文件夹(如问题中提到的),如果没有创建一个,则将该文件移动到新创建的文件夹中。所以文件将根据日期文件夹进行排序。现在我所面临的限制是,下次当它检查文件时,它将跳过日期名称上的文件夹。因为我有多个子文件夹。我的文件路径是noit-fix(硬编码),这真的只是一点点。我建议您编辑您的问题,以包括整个批次。我不清楚此举将如何帮助检查新文件。当您知道子文件夹为什么要通过for/r进行计算时?@LotPings添加了我迄今为止创建的脚本。。!混乱加剧:-(for/r
将为您获取包含xls文件的最后一个文件夹,可能是附加了sdate的文件夹-因此仍然无法猜测您的目标。顺便说一句,带有完全不同驱动器/文件夹的注释掉的robocopy命令没有帮助。此逻辑正在进行微小更改。但是由于`for/r D中的
/r
:\(*.xls)中的\%%i设置“FPath=%%~dpi”`它始终只指向最后一个文件夹。我想要的是它应该处理所有子文件夹。是否知道用
/r
替换什么:-(