2014-03-03 3 views
1

내가 파일 목록
img001.img input.txt를
,
doc001.docx,
doc002.docx,
csv001.csv,
pdf001를 포함하는 파일 input.txt을을 데 고려하십시오. PDF,
csv002.csv
목록 파일을 특정 디렉토리에 복사하는 방법은 무엇입니까?

@echo off 
del /f Dirfilelisttemp.txt 
rd DirTempList 

echo   *****  READ Started,Input.txt  ***** 
    for /f "tokens=*" %%a in (input.txt) do ( 
     dir /s /b D:\com\example_4.1\%%a>>Dirfilelisttemp.txt 
    ) 
echo   *****  READ COMPLETED Input.txt  ***** 

echo   *****  Render Started,Dirfilelisttemp.txt  ***** 
    for /f "tokens=*" %%a in (Dirfilelisttemp.txt) do ( 
     xcopy /e /v /s %%a" /-y D:\DirTempFolder 
    )  
echo   *****Render COMPLETED,Dirfilelisttemp.txt  ***** 

참고 : Dirfilelisttemp.txt
D : \ COM \ example_4.1 \ IMG img001.img \
D : \ COM \ example_4.1 문서 \ doc001.docx \
D : \ COM \ example_4.1 문서 \ doc002 \. DOCX,
D : \ COM \ example_4.1 \ CSV \ csv001.csv,
D : \ COM \ example_4.1 \ CSV \
D csv002.csv : \ COM \ example_4.1 \ CSV \ pdf001. PDF

원하는 출력 :
D : \ DirTempFolder \ COM \ example_4.1 \ IMG img001.img \
D : \ DirTempFolder \ co.kr에서 \ example_4.1 문서 \ doc001.docx \
D : \ DirTempFolder \ COM \ example_4.1 문서 \ doc002.docx \
D : \ DirTempFolder \ COM \ example_4.1 \ CSV \ csv001.csv,
D : \ DirTempFolder \ COM \ example_4.1 \ CSV \ csv002.csv
D : \ DirTempFolder \ COM \ example_4.1 \ CSV \

실제 출력 pdf001.pdf :
D : \ DirTempFolder \ img001.img,
D : \ DirTempFolder \ doc001.docx,
D : \ DirTempFolder \ doc002.docx,
,D : \ DirTempFolder \ csv001.csv,
D : \ DirTempFolder pdf001.pdf \
D : \ DirTempFolder \ csv002.csv


이를 실행 한 후, 나 "실제 출력"을 얻고있다. 그러나 나는 원하는 출력을 얻을 수 없었다. 은 원하는 출력을 얻기위한 솔루션입니까?

답변

0

당신은 루프 마지막에 몇 가지 간단한 변화를 필요로하고 delayedexpansion에게

@echo off 
setlocal enabledelayedexpansion 

if exist Dirfilelisttemp del /f /q Dirfilelisttemp.txt 
if exist DirTempList rd /s /q DirTempList 

for /f "tokens=*" %%a in (input.txt) do ( 
    dir /s /b "D:\com\example_4.1\%%a">>Dirfilelisttemp.txt 
) 

for /f "tokens=*" %%a in (Dirfilelisttemp.txt) do ( 
    set "ext=%%~xa" & set ext=!ext:,=! 
    if not exist "c:\Temp%%~pa" md "c:\Temp%%~pa" 
    xcopy /e /v /s "%%~dpna!ext!" /-y "D:\DirTempFolder%%~pa" 
)  

를 추가 당신은 파일 이름의 끝에서 쉼표를 제거하기 위해 지정하지 않은하지만 난 당신이 확장에 그 (것)들이 의심 그래서 나는 그들을 제거했다.

+0

D : \ DirTempFolder %% ~ pa –

+0

실행 후 "파서 오류"가 표시됩니다. 지금 사용해보십시오. 작동해야합니다. –

+0

감사합니다! "%% ~ pa"는 –

0
@echo off 

    setlocal enableextensions 

    set "sourceDir=D:\com\example_4.1" 
    set "targetDir=D:\DirTempFolder" 

    for /f "usebackq tokens=*" %%a in ("input.txt" 
    ) do for %%b in ("%sourceDir%\%%~a" 
    ) do if exist "%%~fb" xcopy /y "%%~fb" "%targetDir%%%~pb" 

    endlocal 
관련 문제