이전 파일과 매수를 덮어 쓰지 않고 목록을 기반으로 파일을 이동하는 배치 파일

sid

파일이있는 폴더와 .txt한 폴더에서 다른 폴더로 복사해야하는 파일 이름 및 사본 수 목록이있는 파일이 있습니다.

스크립트는 파일을 복사하지만 .txt파일에 동일한 이름 파일이 두 개 있으면 이전 파일을 덮어 씁니다.

목록에는 다음이 있습니다.

file1.txt 1
file2.txt 1
file1.txt 3
file2.txt 2

다음을 달성하고 싶습니다.

file1.txt
file2.txt
file1(1).txt
file1(2).txt
file1(3).txt
file2(1).txt

이것은 내가 지금까지 가지고있는 코드입니다.

@echo off
set Source=C:\Users\siddique.gaffar\Desktop\Artworks
set Target=C:\Users\siddique.gaffar\Desktop\Artworks Copy
set FileList=C:\Users\siddique.gaffar\Desktop\Artwork TXT File\Book1.txt
echo.

if not exist "%Source%" echo Source folder "%Source%" not found & goto Exit
if not exist "%FileList%" echo File list "%FileList%" not found & goto Exit
if not exist "%Target%" md "%Target%"

for /F "delims=" %%a in ('type "%FileList%"') do copy "%Source%\%%a" "%Target%"


:Exit
echo.
echo press the Space Bar to close this window.
pause > nul
J.Baoby

다음은 트릭을 수행해야합니다.

@echo off 
set Source=C:\Users\siddique.gaffar\Desktop\Artworks
set Target=C:\Users\siddique.gaffar\Desktop\Artworks Copy
set FileList=C:\Users\siddique.gaffar\Desktop\Artwork TXT File\Book1.txt
echo.
if not exist "%Source%" echo Source folder "%Source%" not found & goto Exit 
if not exist "%FileList%" echo File list "%FileList%" not found & goto Exit
if not exist "%Target%" md "%Target%" 

for /F "usebackq tokens=1-2" %%a in ("%FileList%") do call :CopyFile "%%a" %%b


:Exit
echo.
echo press the Space Bar to close this window.
pause > nul
exit /b 0

:CopyFile
:: first argument  = filename
:: second argument = number of copies

REM A little trick that will put limit on 0 if second argument is empty or not a number
set secondarg=%~2
set /a limit=secondarg

REM if limit is invalid (not strict positive), exit the function
IF %limit% LEQ 0 (
    echo Invalid number of copies
    exit /b 1
)
IF NOT EXIST "%Target%\%~1" (
    copy "%Source%\%~1" "%Target%"
    IF %limit% LEQ 1 exit /b 0
    set /a limit-=1
)

REM File already exists: search correct index for filename
set index=0
set "targetfile=%target%\%~n1"
set file_ext=%~x1

:following
set /a index+=1
Rem if file with index %index% already exists, go back to get following index
IF exist "%targetfile%(%index%).%file_ext%" goto :following

Rem we have the correct index, now we can copy
set /a limit=index+limit-1
FOR /L %%g IN (%index%,1,%limit%) DO copy "%Source%\%~1" "%targetfile%(%%g).%file_ext%"
exit /b 0

긴 파일 이름이있는 경우 또 다른 옵션 명령 의 출력을 분석하는 대신 루프 usebackq에서 큰 따옴표를 사용 하고 경로를 for f묶는 것입니다 type.

이 함수 :CopyFile는로 파일의 존재를 확인하고 IF EXIST카운터를 사용하여 새 파일의 파일 이름에 대한 다음 색인을 찾습니다. 경로 조작사용 하여 색인으로 새 파일 이름을 생성합니다.

편집 : 텍스트 파일에서 필요한 사본 수를 읽고 그 숫자를 :CopyFile함수의 두 번째 인수로 지정할 수있는 가능성을 추가했습니다 . 숫자가 주어지지 않거나 숫자가 완전 양수가 아니면 (0보다 큼) 복사본을 만들지 않습니다.

추신 : %limit%두 번째 인수가 비어있는 경우 0으로 설정되는 "작은 트릭" set/a플래그로 빈 변수를 0으로 대체 하기 때문에 작동합니다. 인수 변수를 직접 사용하는 경우에는 작동하지 않습니다.

set /a limit=%~2

cmd 파서가 %~2빈 문자열로 대체 되고 플래그를 set /a limit=사용하여 잘못된 할당 이 실행 되므로 두 번째 인수가 비어 있으면 오류가 발생합니다 /a. 그러나 추가 변수를 대중 교통으로 사용하는 경우 :

set var=%~2
set /a limit=var

setcmd 인터프리터가 아닌 변수 확장을 처리 하게 할 것 입니다. set것을 볼 var(경우에 변수가 비어 %2비어)를 0으로 대체한다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

새 폴더를 만들지 않고 이름을 기반으로 파일을 이동하는 배치 파일

분류에서Dev

파일을 덮어 쓰지 않고 대신 Python의 기존 파일에 숫자를 추가하여 다른 txt 파일과 동일한 이름으로 파일을 만드는 방법은 무엇입니까?

분류에서Dev

덮어 쓰지 않고 배치 파일 복사 및 이동

분류에서Dev

Java를 덮어 쓰지 않고 동일한 이름으로 파일 만들기

분류에서Dev

Bash를 사용하여 덮어 쓰지 않고 점진적으로 로그 파일 배치의 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

덮어 쓰지 않고 출력을 사용하여 파일 찾기 및 이동

분류에서Dev

각 루프 반복으로 덮어 쓰지 않고 파일을 쓰는 방법

분류에서Dev

파일을 덮어 쓰지 않고 기존 파일에 복사하는 Linux cmd

분류에서Dev

파이썬에서 전체 파일을로드하지 않고 매트 파일 변수 목록 가져 오기

분류에서Dev

7zip으로 배치 스크립트에 이미있는 경우 덮어 쓰지 않고 zip에 파일을 추가하는 방법

분류에서Dev

업로드하기 전에 이미지 파일의 크기를 조정하십시오. 임시 파일을 덮어 쓰고 업로드 할 수 있습니까?

분류에서Dev

MS Visual Studio Express 2013이 저장 파일을 자동으로 덮어 쓰지 않도록하는 방법

분류에서Dev

Windows Phone8의 기존 파일 내용을 덮어 쓰지 않고 데이터를 skydrive에 업로드

분류에서Dev

이미지 파일을 '일반 파일'로 읽고 쓰기

분류에서Dev

지우지 않고 파일의 바이트 덮어 쓰기

분류에서Dev

새 와일드 카드 파일을 다운로드하고 이전 파일을 덮어 쓰려면 wget

분류에서Dev

이전 텍스트를 덮어 쓰지 않고 여러 줄 문자열을 텍스트 파일에 저장

분류에서Dev

iOS- 서버에서 sqlite 파일을 다운로드하고 이전 파일 덮어 쓰기

분류에서Dev

Codeigniter / PHP 업로드 PDF 파일이 서버의 기존 파일을 덮어 쓰지 않음

분류에서Dev

curl : 기존 파일을 덮어 쓰지 않는 방법?

분류에서Dev

이름 바꾸기 스크립트가 파일 이름을 앞에 붙이지 않고 덮어 쓰는 경우

분류에서Dev

기존 파일을 덮어 쓰지 않고 파일을 복사하려면 어떻게합니까?

분류에서Dev

Synology Diskstation 로컬 백업이 변경된 파일을 덮어 쓰지 않음

분류에서Dev

파일 이름 패턴 목록과 일치하지 않는 파일 찾기

분류에서Dev

스프링 배치 : csv 파일을 읽고 결과를 다른 파일에 넣기 전에이 목록을 수정합니다.

분류에서Dev

curl이 파일을 덮어 쓰지 않고 이름을 자동으로 변경하도록 하시겠습니까?

분류에서Dev

비슷한 이름의 파일을 덮어 쓰지 않도록 자동 완성을 중지하는 방법

분류에서Dev

Qt C ++ 파일을 계속하고 덮어 쓰지 않음

분류에서Dev

파일을 덮어 쓰지 않고이 데이터를 JSON 파일에 올바르게 쓰는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    새 폴더를 만들지 않고 이름을 기반으로 파일을 이동하는 배치 파일

  2. 2

    파일을 덮어 쓰지 않고 대신 Python의 기존 파일에 숫자를 추가하여 다른 txt 파일과 동일한 이름으로 파일을 만드는 방법은 무엇입니까?

  3. 3

    덮어 쓰지 않고 배치 파일 복사 및 이동

  4. 4

    Java를 덮어 쓰지 않고 동일한 이름으로 파일 만들기

  5. 5

    Bash를 사용하여 덮어 쓰지 않고 점진적으로 로그 파일 배치의 이름을 바꾸는 방법은 무엇입니까?

  6. 6

    덮어 쓰지 않고 출력을 사용하여 파일 찾기 및 이동

  7. 7

    각 루프 반복으로 덮어 쓰지 않고 파일을 쓰는 방법

  8. 8

    파일을 덮어 쓰지 않고 기존 파일에 복사하는 Linux cmd

  9. 9

    파이썬에서 전체 파일을로드하지 않고 매트 파일 변수 목록 가져 오기

  10. 10

    7zip으로 배치 스크립트에 이미있는 경우 덮어 쓰지 않고 zip에 파일을 추가하는 방법

  11. 11

    업로드하기 전에 이미지 파일의 크기를 조정하십시오. 임시 파일을 덮어 쓰고 업로드 할 수 있습니까?

  12. 12

    MS Visual Studio Express 2013이 저장 파일을 자동으로 덮어 쓰지 않도록하는 방법

  13. 13

    Windows Phone8의 기존 파일 내용을 덮어 쓰지 않고 데이터를 skydrive에 업로드

  14. 14

    이미지 파일을 '일반 파일'로 읽고 쓰기

  15. 15

    지우지 않고 파일의 바이트 덮어 쓰기

  16. 16

    새 와일드 카드 파일을 다운로드하고 이전 파일을 덮어 쓰려면 wget

  17. 17

    이전 텍스트를 덮어 쓰지 않고 여러 줄 문자열을 텍스트 파일에 저장

  18. 18

    iOS- 서버에서 sqlite 파일을 다운로드하고 이전 파일 덮어 쓰기

  19. 19

    Codeigniter / PHP 업로드 PDF 파일이 서버의 기존 파일을 덮어 쓰지 않음

  20. 20

    curl : 기존 파일을 덮어 쓰지 않는 방법?

  21. 21

    이름 바꾸기 스크립트가 파일 이름을 앞에 붙이지 않고 덮어 쓰는 경우

  22. 22

    기존 파일을 덮어 쓰지 않고 파일을 복사하려면 어떻게합니까?

  23. 23

    Synology Diskstation 로컬 백업이 변경된 파일을 덮어 쓰지 않음

  24. 24

    파일 이름 패턴 목록과 일치하지 않는 파일 찾기

  25. 25

    스프링 배치 : csv 파일을 읽고 결과를 다른 파일에 넣기 전에이 목록을 수정합니다.

  26. 26

    curl이 파일을 덮어 쓰지 않고 이름을 자동으로 변경하도록 하시겠습니까?

  27. 27

    비슷한 이름의 파일을 덮어 쓰지 않도록 자동 완성을 중지하는 방법

  28. 28

    Qt C ++ 파일을 계속하고 덮어 쓰지 않음

  29. 29

    파일을 덮어 쓰지 않고이 데이터를 JSON 파일에 올바르게 쓰는 방법은 무엇입니까?

뜨겁다태그

보관