2014-03-03 103 views
1

考虑我有它包含文件列表
input.txt中
img001.img,
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 \ csv002.csv
d:\ COM \ example_4.1 \ CSV \ pdf001。 PDF

希望的输出:
d:\ DirTempFolder \ COM \ example_4.1 \ IMG \ img001.img,
d:\ DirTempFolder \ COM \ 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后出现“Parser Error” –

+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 
相关问题