한 파일 목록을 다른 파일 목록으로 복사

한 파일 목록을 다른 파일 목록으로 복사

SQL 데이터베이스의 테이블에서 추출된 파일 목록이 있습니다. 파일은 구분된 텍스트 파일이거나 Excel 스프레드시트 중 가장 적합한 파일일 수 있습니다.

파일은 다음과 같습니다

sourcePath1\fileName1, destPath1\fileName1
sourcePath2\fileName2, destPath2\fileName2
sourcePath3\fileName3, destPath3\fileName3

한 열에는 파일의 원래 경로와 파일 이름이 포함되고, 두 번째 열에는 파일의 원하는 경로와 파일 이름이 포함됩니다. 이는 원래 SELECT 문의 표준 REPLACE() 함수를 사용하여 얻은 것입니다.

이제 소스 파일을 대상에 복사하는 데 실제로 필요한 목록이 생겼습니다.

명령줄(배치 또는 Powershell?)을 사용하거나 스크립팅 또는 GUI를 통해 이를 달성할 수 있습니까?

답변1

다음은 쉼표로 구분된 값(csv) 텍스트 파일을 구문 분석하는 기본 Windows 배치 솔루션입니다.

@echo off
for /f "tokens=1,2 delims=," %%A in (file.csv) do (
    copy %%A %%B
)

답변2

David Ruhmann의 답변을 바탕으로 다음이 작동합니다. 파일이 파일인지 폴더인지 묻는 프롬프트에 를 사용하여 xcopy전달합니다 .F

@echo off
for /f "tokens=1,2 delims=," %%A in (book1.csv) do (
    cmd /c echo F | xcopy "%%~A" "%%~B"
)

편집: @DavidRuhmann 제안에 따라 물결표(~)를 추가했습니다.

답변3

이것은 Unix 쉘을 사용하면 상당히 쉽습니다. 내 방법으로 할 수 있는 방법은 다음과 같습니다.해밀턴 C 쉘. (그만큼무료 버전이 작업을 수행합니다.) 다음과 매우 유사한 작업을 수행할 수 있습니다.시그윈 bash.

정말 쉬운 방법은 다음을 사용하여 목록을 변환하는 것입니다.sed각 줄이 작업인 스크립트로 cp. 그런 다음 스크립트를 실행하면 됩니다.

sed "s/^^/cp '/;s/, /' '/;s/^$/'/" < list.csv > copyscript.csh
copyscript

해당 파일은 다음과 같습니다 copyscript.csh.

sed를 사용하여 CSV 목록을 cp 명령 목록으로 변환

관련 정보