Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批量复制不同文件夹中的多个文件,其路径列在txt文件中,并重命名所有重复文件_Batch File_Cmd_Copy_Batch Rename - Fatal编程技术网

Batch file 批量复制不同文件夹中的多个文件,其路径列在txt文件中,并重命名所有重复文件

Batch file 批量复制不同文件夹中的多个文件,其路径列在txt文件中,并重命名所有重复文件,batch-file,cmd,copy,batch-rename,Batch File,Cmd,Copy,Batch Rename,我几天来一直试图解决这个问题,但都没有结果。我没有任何编程经验,这个任务让我发疯 我有一个txt文件,其中包含需要复制的文件的路径列表。此文件中大约有8000个路径 复制每个项目并不是什么大事,因为我可以在每个路径之前/之后添加复制命令和目标 我的问题的关键是,这些文件中的许多文件具有相同的文件名,当它们位于不同的目录中时,这不是问题 然而,我需要在同一个目标文件夹中的所有文件,它不断覆盖自己 总之,我有一个.txt文件,基本上如下所示: D:\Big folder\Folder\Subfold

我几天来一直试图解决这个问题,但都没有结果。我没有任何编程经验,这个任务让我发疯

我有一个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\"
它执行读取和复制作业,但不执行重命名部分

将下面的脚本保存到copy.bat,从脚本目录打开Cmd提示符,然后运行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
将下面的脚本保存到Copy.bat,从脚本目录打开Cmd提示符,然后运行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

谢谢你的帮助!所有的东西都被复制了,没有任何问题。谢谢你的帮助!所有的东西都被复制了,没有任何问题