循环此批处理语法

Looping this batch syntax

我有一堆文件夹需要移动到另一个目录。为了完成这项任务,我制作了一个 .bat。我的意图是 select 我想移动的文件夹并拖到 .bat 文件上。这是一次对一个文件夹使用以下语法,如果我想一次对多个文件夹执行相同的操作,我必须做什么?

红利问题,如何只复制文件夹中的文件而不复制文件夹本身?

xcopy %* C:\DOCUMENTALE\dms_in\ /s

SHIFT 命令就是您要找的。

@ECHO OFF
:LOOP
IF NOT "%1"=="" (
    xcopy %1 C:\DOCUMENTALE\dms_in\ /s
    SHIFT
    GOTO LOOP
)

将多个文件或文件夹添加到批处理脚本时,它们的路径将作为参数附加。 %1 是第一条路径,%2 是第二条路径,依此类推。 SHIFT 只是将索引向右移动,因此 %2 变为 %1%3 变为 %2 等等。该脚本不断循环,直到它到达最后一个附加路径,该路径变为 %1SHIFT 的下一次执行将 %1 设置为空字符串,IF 条件不再满足并且脚本停止。

现在让我们开始你的奖励问题:

有几种方法可以实现这一点。这是其中之一:

@ECHO OFF
:LOOP
IF NOT "%1"=="" (
    FOR /F %%F IN ('dir /b /s /a-d "%1"') DO (
        COPY /y %%F C:\DOCUMENTALE\dms_in\
    )
)