循环使用此批处理语法

时间:2018-01-09 09:55:16

标签: batch-file cmd batch-processing

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

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

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

1 个答案:

答案 0 :(得分:0)

您正在寻找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\
    )
)