0

我正在尝试整理数据文件夹并编写了一个批处理文件来处理许多初步工作(删除空文件夹,删除垃圾文件等),但是在尝试处理其中的文件时我摔倒了重复的文件夹。

这是当前情况的一个示例:

w:\Data\Corporations\555\20130101\Concat_000001\555_20130101_data.zip
w:\Data\Corporations\555\20130101\Concat_000002\555_20130101_data.zip
w:\Data\Corporations\555\20130101\Concat_000003\555_20130101_data.zip
w:\Data\Corporations\555\20130101\Concat_000004\555_20130101_data.zip

每个 YYYYMMDD 文件夹应该只有一个 Concat 文件夹,应该如下所示:

w:\Data\Corporations\555\20130101\Concat\555_20130101_data.zip

w:\Data\Corporations 中有数百个文件夹需要处理,所以我想我首先需要找到任何名为 Concat_* 的文件夹,在同一个父文件夹中创建一个名为 Concat 的文件夹,然后从 Concat_ 中移动任何 zip到康卡特。

我尝试了FOR /D in (Concat_*)withMDMOVE命令的各种组合,但到目前为止没有运气。我还尝试从语句中调用一个子例程,该FOR语句将跳回树中的一个级别,创建一个名为 Concat 的文件夹,返回到 Concat_* 并移动 .zip 文件,但再次没有运气。

任何帮助将不胜感激。

干杯,

皮特

4

2 回答 2

2

尝试这个:

for /r "w:\Data\Corporations\555" %%a in (*.zip) do for %%b in ("%%~dpa.") do md "%%~dpbConcat" 2>nul & move /y "%%~fa" "%%~dpbConcat"
于 2013-08-06T14:45:16.770 回答
1

The following does what you asked. If you uncomment the last line, then empty config_* folders will be removed. Non-empty config_* folders will be preserved.

@echo off
for /f "delims=" %%F in ('dir /b /ad /s concat_*') do (
  if not exist "%%~dpFconcat\" mkdir "%%~dpFconcat\"
  if exist "%%F\*.zip" move /y "%%F\*.zip" "%%~dpFconcat\" >nul
  REM uncomment line below if you want to remove empty concat_* folders
  REM dir /b "%%F"|findstr "^" >nul || rd "%%F"
)
于 2013-08-06T15:49:17.623 回答