使用嵌套循环在文件列表将文件复制到文件夹中folderlist,有一批(Use nested loo

2019-11-03 07:53发布

我想同时从文件列表和文件夹列表读取每个文件复制到每个文件夹,一个文件重命名。

下面是我的原代码。 外循环不会增加。 我试图运用我所了解的循环和延迟扩展,但没有奏效所有可能的方法。

有人可以告诉我如何修复代码或改用什么?

EDIT澄清问题:随着每次迭代中,“回波SRC”相呼应,第一线Filelist.txt中。 永远不会改变。 在另一方面,“回声DEST” 经历folderlist.txt预期(期望)。

@echo off
setlocal enabledelayedexpansion
:: var is set in calling routine
SET "newname=%var%_filename_0.jpg"   
    FOR /F  %%G IN (Filelist.txt) DO (
    FOR /F %%H IN (Folderlist.txt) DO (
        SET src=%%G
        SET dest=%%H
            echo src is !src!
            echo dest is !dest!
            REM Here with each iteration do a copy and rename
            :: copy "!src!" "!dest!\%newname%"  1>nul
  )
)

Answer 1:

在你的代码的主要问题是没有语法,但这个概念。 你的代码读取文件的列表,然后,这条线,读取文件夹列表中的所有行线。

如果您有嵌套for循环,对于外部的每个迭代for内部循环的所有迭代执行。

如果你需要从两个文件读取同步线,你需要像

@echo off
    setlocal enableextensions disabledelayedexpansion

    < files (
        for /f "delims=" %%a in (folders) do (
            set /p "myFile="
            setlocal enabledelayedexpansion
            for /f "delims=" %%b in ("!myFile!") do (
                endlocal
                echo %%a %%b
            )
        )
    )

也就是说,文件夹列表中读取与for命令,和文件列表,从具有标准输入读取set /p 。 由于我们重定向文件列表作为输入,该set /p将从中获得其数据。



文章来源: Use nested loop to copy files in filelist to folders in folderlist, with batch