我几天都试图解决这个问题但无济于事。我没有任何编程经验,这项任务一直让我疯狂。
我有一个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 :(得分: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