批量复制不同文件夹中的多个文件,其路径在 txt 文件中列出,并重命名任何重复项
Batch copy multiple files from different folders with their paths listed in a txt file, and rename any duplicates
几天来我一直在尝试解决这个问题,但无济于事。我没有任何编程经验,这个任务让我抓狂。
我有一个 txt 文件,其中包含需要复制的文件的路径列表。此文件中有大约 8000 个路径。
复制每个项目没什么大不了的,因为我可以添加复制命令和目标 before/after 每个路径。
我的问题的症结在于这些文件中的许多文件具有相同的文件名,当它们位于不同的目录中时,这不是问题。
但是我需要同一个目标文件夹中的所有文件,它一直在覆盖自己。
总而言之,我有一个基本上如下所示的 .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\"
执行读取和复制作业但不执行重命名部分
将下面的脚本保存到Copy.bat,从脚本目录打开Cmd Prompt,然后运行 bat。这对我来说很有用。 Post 确切的错误,如果有的话。
@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
几天来我一直在尝试解决这个问题,但无济于事。我没有任何编程经验,这个任务让我抓狂。
我有一个 txt 文件,其中包含需要复制的文件的路径列表。此文件中有大约 8000 个路径。
复制每个项目没什么大不了的,因为我可以添加复制命令和目标 before/after 每个路径。
我的问题的症结在于这些文件中的许多文件具有相同的文件名,当它们位于不同的目录中时,这不是问题。
但是我需要同一个目标文件夹中的所有文件,它一直在覆盖自己。
总而言之,我有一个基本上如下所示的 .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\"
执行读取和复制作业但不执行重命名部分
将下面的脚本保存到Copy.bat,从脚本目录打开Cmd Prompt,然后运行 bat。这对我来说很有用。 Post 确切的错误,如果有的话。
@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