2016-08-08 84 views
1

我一直试图解决这个问题几天无济于事。我没有任何编程经验,而这项任务已经让我感到非常紧张。批量拷贝来自不同文件夹的多个文件,并将它们的路径列在一个txt文件中,并重命名任何重复的文件。

我有一个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\" 

这确实读取和复制的工作,但不是重命名部分

回答

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 
+0

感谢您的帮助!一切都被复制没有任何问题 – monkeywithawrench

相关问题