我有文件夹树。
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="
答案 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
)
您也可以在信号文件中添加一些有用的信息,例如日期和时间。