批处理脚本循环遍历从1个目录到另一个目录的多个文件夹

时间:2013-11-20 21:48:11

标签: batch-file batch-processing

我没有编写批处理脚本的经验,但我觉得这是一次机会。基本上,我有两个目录中具有相同周末日期的文件夹。我想编写一个循环遍历第一个目录中所有文件夹的脚本,并将文件从每个文件夹移动到另一个目录中的同一文件夹。

E.g。

\ 10.25.2.100 \ f $ \ Download \ A - 第一个目录

名为

的文件夹

201310 201311 201312 201313

\ 10.25.2.100 \ d $ \ Download \ B - 第二个目录

名为

的文件夹

201310 201311 201312 201313

在201310中,对于第一个目录,我想将其中的2个文件移动到201310的第二个目录。

我正在考虑修改此脚本,但我没有经验,语法意味着什么:

@ECHO OFF
SETLOCAL
SET source= \\10.25.2.100\f$\Download\A
SET destroot=\\10.25.2.100\d$\Download\B
SET cdtl=0
:loploop
SET /a cdtl+=1
FOR /f "tokens=%cdtl%*delims=\" %%i IN ("%source%") DO IF NOT "%%j"=="" GOTO loploop
FOR /f "delims=" %%i IN (
    ' dir /b/s/ad "%source%\converted" '
    ) DO CALL :movedest "%%~dpni%"
)
GOTO :eof

:movedest
SET destdir=%~1
FOR /f "tokens=%cdtl%*delims=\" %%d IN (%1) DO SET destdir=%destroot%\%%e
ECHO MD "%destdir%" 2>NUL
ECHO MOVE /y "%~1\*.*" "%destdir%\"
GOTO :eof

我认为这是一个巨大的循环,它循环遍历第一个目录中的所有文件夹并检查这两个文件,然后比较第二个目录中文件夹的周末日期。如果匹配,请将两个文件放在那里。

1 个答案:

答案 0 :(得分:0)

看看如何:它会将移动命令回显到屏幕,检查它们并删除echo以使批处理文件正常运行。

@echo off
pushd "\\10.25.2.100\f$\"
for /d %%a in (download\A\*) do echo move "%%a\*.*" "download\B\%%~nxa\"
popd