批量复制来自不同文件夹的多个文件及其路径在txt文件中列出,并重命名任何重复项

时间:2016-08-08 14:06:21

标签: batch-file cmd copy batch-rename

我几天都试图解决这个问题但无济于事。我没有任何编程经验,这项任务一直让我疯狂。

我有一个txt文件,其中包含需要复制的文件的路径列表。此文件中包含大约8000个路径。

复制每个项目并不是一件大事,因为我可以在每条路径之前/之后添加复制命令和目的地。

我的问题的关键是许多这些文件具有相同的文件名,当它们位于不同的目录中时,它不是问题。

但是,我需要同一个目标文件夹中的所有文件,并且它会自行覆盖。

总而言之,我有一个.txt文件基本上是这样的:

D:\Big folder\Folder\Subfolder a\filea.file    
D:\Big folder\Folder3\Subfolder za\filek.file    
D:\Big folder\Folder\Subfolder ds\filed.file   
D:\Big folder8\Folder\Subfolder p\filea.file...

我需要一些工具,让我将所有这些文件复制到一个目标文件夹中,并确保重命名所有重复文件,以免它们被覆盖。

使filea.file和filea.file成为filea.file和filea1.file

编辑:到目前为止我已经提出了

FOR /F "tokens=* usebackq" %i IN (`type "C:\Users\username\Desktop\completelist.txt"`) DO COPY "%i" "E:\destination\"

执行读取和复制作业但不执行重命名部分

1 个答案:

答案 0 :(得分:0)

将脚本保存到 Copy.bat ,从脚本目录中打开Cmd Prompt,然后运行bat。这对我来说很有用。发布确切的错误,如果有的话。

@echo off
setlocal enabledelayedexpansion
set file=%userprofile%\Desktop\completelist.txt
set "dest=E:\destination" & set "i=" & pushd !dest!
for /f "usebackq tokens=*" %%G in ("%file%") do (
    call :rename %%~nG %%~xG %%G
    copy "%%G" "%dest%\!target!" >nul )
popd
exit /b

:rename
set "target=%1!i!%2"
:loop
set /a i+=1
if exist "!target!" set "target=%1!i!%2" & goto :loop
set "i=" & echo Copied %3 to !target!
exit /b