
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
.