2016-08-08 1 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 프롬프트를 열고 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

관련 문제