2013-04-09 75 views
0

这里是我的文件夹中的拷贝文件存在于在多个同名的文件夹不同的目标文件夹

A\Temp\folder1\c\one.txt 
A\Temp\folder2\c\one.txt 
A\Temp\folder3\c\one.txt 

的文件夹结构,另一个文件夹B

B\folder1.ext\c\ Note: the extension is part of its folder name. 
B\folder2.ext\c\ 
B\folder3.ext\c\ 

我想要做的是复制所有此时就把one.txt存盘的从一个\ temp * \ C \此时就把one.txt存盘,以C * \ C \

什么,我想现在是:

for /D %%b in (TEMP\*) do (
set folder=%%~nb 
ECHO %%~b 
ECHO Copying %%b 
ECHO. 
ECHO. 
COPY %%b\c\one.txt B\%folder%.ext\c 

它不起作用因为文件夹名gettig存储在%文件夹中%每次只有最后一个文件夹(这里是folder3)的名称,即folder1中的one.txt被复制到C \ folder3和其他文件夹中

setlocal EnableDelayedExpansion 
for /D %%b in (TEMP\*) do (
    set folder=%%~nb 
    ECHO %%~b 
    ECHO Copying %%b 
    ECHO. 
    ECHO. 
    COPY %%b\c\one.txt B\!folder!.ext\c 
) 
endlocal 

否则,您必须使用循环变量:如果你想要一个循环变量分配到循环内部,你必须启用延迟扩展另一个变量复制(系统找不到指定的文件)

回答

0

for /D %%b in (TEMP\*) do (
    COPY %%~b\c\one.txt B\%%~nb.ext\c 
) 

这样做的原因是没有延迟扩展,变量(%folder%)在分析时间处扩大,即当命令(块)被读取时。启用延迟扩展后,变量(!folder!)扩展为运行时间

+0

谢谢,它完美的作品 – 2013-04-09 09:51:52

相关问题