2011-01-26 4 views
0

디렉터리 및 파일 이름이있는 .csv 파일을 읽고 해당 파일을 복사하도록 구문 분석하는 xcopy 스크립트가 있습니다.xcopy를 사용하여 명령 프롬프트를 로깅합니다.

0 File(s) copied 
0 File(s) copied 
0 File(s) copied 
Does Y:\hcri001\2d\545392db-50fa-40d9-aaa2-0892ca5057f3 specify a file name 
or directory name on the target 
(F = file, D = directory)? F 
Z:\hcri001\2d\545392db-50fa-40d9-aaa2-0892ca5057f3 
1 File(s) copied 
:

echo F | xcopy /i /d "Z:\hcri001\a1\ 
ffce5a14-33ca-43cf-b366-af266c450979" "Y:\hcri001\a1\ffce5a14-33ca-43cf-b366 
-af266c450979" 1>>"D:\xopy\Log.txt 

그러나, 로그는 단지 명령의 출력이 있습니다

echo F | for /f "delims=, tokens=1,2,3" %i in (D:\foo.csv) 
do xcopy /i /d "Z:\%i\%j\%k" "Y:\%i\%j\%k" >> "D:\xcopy\Log.txt" 

명령 프롬프트에 출력이 실행되는 명령입니다 : 여기

스크립트입니다

출력뿐만 아니라 실행중인 명령도 모두 있습니까? 또한 어쨌든 내가 줄의 시작 부분에 넣을 수있는 일종의 카운터가 있습니까?

내 이상적인 로그 파일이 형식에있을 것입니다 :

1) C:\Desktop>echo F | xcopy /i /d "Z:\hcri001\a7\ 
    00a62a73-d7a7-4cfb-b55c-457bc67b3647" "Y:\hcri001\a7\00a62a73-d7a7-4cfb-b55c 
    -457bc67b3647" 1>>"D:\Robocopy\AtlusPatient131172CopyLog.txt 
    0 File(s) copied 
    2) C:\Desktop>echo F | xcopy /i /d "Z:\hcri001\d5\ 
    003452354-d7a7-4cfb-452c-457bc67b3647" "Y:\hcri001\d5\003452354-d7a7-4cfb-452c-457bc67b3647" 1>>"D:\Robocopy\AtlusPatient131172CopyLog.txt 
    0 File(s) copied 
    3) C:\Desktop>echo F | xcopy /i /d "Z:\hcri001\2d\545392db-50fa-40d9-aaa2-0892ca5057f3" "Y:\hcri001\2d\545392db-50fa-40d9-aaa2-0892ca5057f3" 1>>"D:\Robocopy\AtlusPatient131172CopyLog.txt 
Does Y:\hcri001\2d\545392db-50fa-40d9-aaa2-0892ca5057f3 specify a file name 
     or directory name on the target 
     (F = file, D = directory)? F 
     Z:\hcri001\2d\545392db-50fa-40d9-aaa2-0892ca5057f3 
     1 File(s) copied 

보너스 포인트 명령이 트리밍 할 수있는 경우 파일 이름 대신 1) "Z:\hcri001\2d\545392db-50fa-40d9-aaa2-0892ca5057f3" 0 File(s) copied

+0

스크립트 내에서가 아니라 스크립트 수준에서 리디렉션하려고 했습니까? 나는 a.cmd >> log.txt를 의미한다. –

답변

1
for /f "delims=, tokens=1,2,3" %i in (D:\foo.csv) do (
    echo xcopy /i /d "Z:\%i\%j\%k" "Y:\%i\%j\%k" >> "D:\xcopy\Log.txt" 
    echo f | xcopy /i /d "Z:\%i\%j\%k" "Y:\%i\%j\%k" >> "D:\xcopy\Log.txt" 
) 

즉 전체 명령을 포함 단지에 카운터의 경우 SETLOCAL ENABLEEXTENSIONS이 필요하고 set counter=1 및 루프 내부 set /a counter=!counter! + 1

+0

위의 내용은 복사하려는 각 이미지에 대해 다음과 같은 오류가 발생한다. 프로세스가 다른 프로세스에서 사용 중이므로 파일에 액세스 할 수 없다. 출력을 로그 파일에 추가하는 동안 여전히 입력을 쓰는 중입니까? – Saggio

+0

나는 아직도 위의 오류 (조금 수정 한 후에도)없이이 프로그램을 실행할 수없는 것 같습니다. 누락 된 부분이 있습니까? – Saggio

관련 문제