덮어쓰지 않고 파일 복사
명령줄에서 "디렉토리 A에서 디렉토리 B로 모든 파일을 복사하십시오. 그러나 파일이 이미 디렉토리 B에 존재한다면 어떤 파일이 최신 파일인지에 관계없이 덮어쓰지 마십시오."라고 말하는 방법을 찾을 수 없습니다.
복사, 이동, xcopy, robocopy를 다 해봤습니다만, 가장 가까운 것은 「A를 B에 카피합니다만, 새로운 파일을 낡은 파일로 덮어쓰지는 말아 주세요」라고 말할 수 있는 것입니다만, 이것은 나에게는 효과가 없습니다.xxcopy를 확인했지만 Visual Studio 빌드 후 이벤트에 종속되어 다른 SVN 사용자가 빌드하기 위해 도구를 설치해야 하는 서드파티를 원하지 않기 때문에 이를 폐기했습니다.
Visual Studio 2010의 빌드 후 이벤트에 명령줄을 추가하여 새 EF 모델 개체의 T4 템플릿에서 생성된 파일이 해당 개체가 속한 프로젝트 폴더에 배포되지만 기존 개체의 재생성된 파일은 잠재적으로 편집된 대상 파일을 덮어쓰지 않도록 합니다.
T4 템플릿이 재생성되기 때문에 소스 파일은 항상 최신이기 때문에, 「newer」스위치를 확실히 사용할 수 없다고 생각합니다.
가능한 항목에 대해 부분 클래스를 사용하지만 부분 클래스를 사용할 수 없는 다른 항목(기본 Editor Template 또는 Display 생성 등)이 있습니다.템플릿 *.ascx 파일)
비슷한 문제를 해결한 사람이 있나요?
Robocopy 또는 "Robust File Copy"는 명령줄 디렉토리 복제 명령입니다. Windows NT 4.0 이후 Windows 자원 키트의 일부로 제공되어 Windows Vista, Windows 7 및 Windows Server 2008의 표준 기능으로 도입되었습니다.
robocopy c:\Sourcepath c:\Destpath /E /XC /XN /XO
(Hydrargyrum, Hail Gallaxar 및 Andy Schmidt를 사용하여) 상세하게 설명:
/E는, Robocopy 가 빈으로 카피하도록 ./XC는 타임스탬프는 같지만 파일사이즈가 다른 기존 파일을 제외합니다.이치노/XN는, 합니다.이치노/XO는, 행선지 합니다.이치노
Robocopy는 Changed, Older 및 News 클래스를 제외하고 스크립트 환경을 로드할 필요 없이 원래 포스터에서 원하는 대로 수행할 수 있습니다.
참고 자료:테크넷, 위키피디아
다운로드원:Microsoft 다운로드 링크(2016년 3월 30일 최종 확인)
다음과 같이 시험해 보십시오.
echo n | copy /-y <SOURCE> <DESTINATION>
-y덮어쓰기 전에 프롬프트만 표시되므로 모든 질문에 n을 연결할 수 있습니다.,, 존지지지):):):):):):
벨리사리우스의 용액은 좋다.
약간 간결한 답변에 대해 자세히 설명하자면:
/E는, Robocopy 가 빈으로 카피하도록 ./XC는 타임스탬프는 같지만 파일사이즈가 다른 기존 파일을 제외합니다.이치노/XN는, directory. 의 보다 새로운 합니다.이치노/XO는 소스 디렉토리의 복사본보다 오래된 기존 파일을 제외합니다.이치노
Robocopy는 Changed, Older 및 News 클래스를 제외하고 스크립트 환경을 로드할 필요 없이 원래 포스터에서 원하는 대로 수행할 수 있습니다.
For %F In ("C:\From\*.*") Do If Not Exist "C:\To\%~nxF" Copy "%F" "C:\To\%~nxF"
다음은 배치 파일 형식입니다.
@echo off
set source=%1
set dest=%2
for %%f in (%source%\*) do if not exist "%dest%\%%~nxf" copy "%%f" "%dest%\%%~nxf"
xcopy를 사용하여 이 작업을 수행하는 이상한 방법이 있습니다.
echo nnnnnnnnnnn | xcopy /-y source target
복사하는 파일 수만큼 n개만 포함하면 덮어쓰기 질문에 모두 n개만 응답합니다.
제 테스트 결과를 좀 더 명확히 하고 싶습니다.
@Hydrargyrum은 다음과 같이 썼다.
- /XN은 소스 디렉토리의 복사본보다 새로운 기존 파일을 제외합니다.로보카피는 보통 그것들을 덮어씁니다.
- /XO는 소스 디렉토리의 복사본보다 오래된 기존 파일을 제외합니다.로보카피는 보통 그것들을 덮어씁니다.
이건 거꾸로 된 거예요.XN은 "eXclude New" 파일을 수행하지만 대상 디렉터리의 복사본보다 최신인 파일은 제외합니다. XO는 "eXclude Older"를 수행하지만 대상 디렉터리의 복사본보다 오래된 파일은 제외합니다.
물론 항상 그렇듯이 자체 테스트를 실시합니다.
잘못된 메시지에 직접 코멘트할 수는 없지만, 모두에게 경고합니다. /XN 및 /XO 옵션의 정의는 이전 메시지에 게시된 것과 비교하여 반전됩니다.
[ Exclude Older / Newer files ]옵션은 RoboCopy 로깅에 표시되는 정보와 일관됩니다.RoboCopy는 SOURCE를 통해 반복된 후 SOURCE의 각 파일이 대상 파일보다 "Older"인지 "NEWER"인지 보고합니다.
따라서 /XO는 여기서 설명한 것처럼 "소스보다 오래된" 파일이 아닌 오래된 소스 파일(직관적인)을 제외합니다.
새 원본 파일 또는 변경된 원본 파일만 복사하고 최신 대상 파일을 바꾸지 않으려면 /XO를 사용하는 것이 좋습니다.
robocopy src dst /MIR /XX
/XX : eXtra 파일 및 dir(대상에는 있지만 원본에는 없음)를 제외합니다.이렇게 하면 대상에서 삭제가 방지됩니다.(이것은 디폴트)
Robocopy 는, 인스톨 되어 있지 않은 시스템에 대해서는, 이쪽에서 다운로드할 수 있습니다(Windows Server 2003 등).
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17657 (설치 시 재부팅 불필요)
잊지 말고 robocopy exe로 경로를 설정하십시오.이를 수행하려면 "내 컴퓨터" > "상세설정" > "환경변수"를 오른쪽 클릭한 후 경로 시스템 변수를 검색하여 끝에 추가합니다. ";C:\Program Files\Windows 자원 키트\툴" 또는 설치 장소.이미 존재하는 경로 변수 문자열은 그대로 두고 추가 경로만 추가하십시오.
경로가 설정되면 velisarius가 제안하는 명령을 실행할 수 있습니다.아주 잘 작동한다.
이것이 나에게 효과가 있었던 것이다.덮어쓰지 않고 다른 드라이브에 파일을 "추가"할 때 사용합니다.
배치 파일: robocopy-missing files.박쥐
@echo off
echo Copying
echo "%1"
echo to "%2"
echo.
echo Press Cntr+C to abort
Pause
echo.
@echo on
robocopy %1 %2 /Xo /XN /XC /J /SL /S /MT:8 /R:1 /W:1 /V /DCOPY:DAT /ETA /COPY:DATO /FFT /A-:SH /XD $RECYCLE.BIN "System Volume Information"
예:
robocopy-missingfiles.bat f:\Working-folder\ E:\Backup-folder\
구현 전에 테스트를 실시합니다.
XCOPY 명령을 사용하여 대상 디렉토리의 기존 파일을 덮어쓰지 않고 원본 폴더에서 대상 폴더로 파일을 복사할 수 있습니다.
먼저 xcopy 옵션 /L/U/Y를 사용하여 대상에 이미 존재하는 파일 이름 목록을 가져와서 임시 파일에 "제외"라고 적습니다.Files.txt.
그런 다음 /EXClude: 옵션과 함께 XCOPY 명령을 사용하여 제외할 파일 이름 목록을 포함하는 파일 경로를 지정하십시오.아래 내용으로 "Copy-Files.bat"이라고 하는 배치 파일을 만들어 즐기세요!소스 및 대상 디렉토리 경로에 대한 사용자 입력을 요청하려면 수정하십시오.
@echo off
set source="C:\Dir1"
set destination="C:\Dir2"
echo Copying non-existing files. NO OVERWRITE!
xcopy %source% %destination% /L/U/Y > %TEMP%\ExcludeFiles.txt
xcopy %source% %destination% /EXCLUDE:%TEMP%\ExcludeFiles.txt
pause
간단한 방법은 /MIR 옵션을 사용하여 두 디렉토리를 미러링하는 것입니다.기본적으로 새 파일만 대상에 복사합니다.다음 명령어로 소스 및 대상을 폴더 경로로 바꿀 때 스크립트는 확장자를 가진 파일을 검색합니다.
robocopy <source directory> <destination directory> *.* /MIR
언급URL : https://stackoverflow.com/questions/4228807/copy-files-without-overwrite
'source' 카테고리의 다른 글
| 사용자의 시간대 결정 (0) | 2023.04.08 |
|---|---|
| Windows Batch File에서 웹 페이지 열기 (0) | 2023.04.08 |
| 실행 파일에서 Windows 서비스 생성 (0) | 2023.04.08 |
| 새 탭 또는 창에서 링크 열기 (0) | 2023.04.08 |
| 액추에이터에서 모든 엔드포인트를 활성화하는 방법(스프링 부트 2.0.0 RC1) (0) | 2023.04.03 |