如何在不创建文件的父文件夹树的情况下复制文件来复制文件

时间:2017-09-21 13:46:32

标签: windows batch-file cmd robocopy

我正在使用robocopy从长层次结构的文件夹结构中复制某些文件。例如:*.properties个文件。它们可能位于目录结构的非常深层(例如C:\a\v\b\g\f\aa.properties)。现在我想将这些属性文件复制到另一个,只保留最顶层的父文件夹(例如:目标文件夹结构将是a\aa.properties);我使用/S选项这样做,但它也包括父母。 以下是我尝试过的批处理文件:

@echo off 

::Author = SHUBHENDU

echo Copying files from %1 to %2


set source=%1
set destination=%2

set list=abc def
(for %%a in (%list%) do (
   echo Copying files from  %%a
   ROBOCOPY %source%\%%a %destination%\%%a *_en.properties /S
))

源目录(示例):

F:.
│   temp.bat
│
└───ss
    ├───asd
    │       ss_en.properties
    │
    └───asdfsdsd
        │   aa_en.properties
        │
        ├───dd
        │       asdsa.txt
        │
        └───ff
                ff_en.properties

必填目的地目录:

F:.
├───asd
│       ss_en.properties
│
└───asdfsdsd
        aa_en.properties
        ff_en.properties

1 个答案:

答案 0 :(得分:0)

您必须确保来源与目的地不同。

请注意!!!我没有重新创建你的场景,所以这是未经测试的,只是修改了你的代码。我将根据您的错误修复代码。

@echo off

set source=%1
set destination=%2

for %%F in (%destination%) do set destination="%%~fF"

for /r %source% %%F in (.) do if "%%~fF" neq %destination% ROBOCOPY %source%\%%F %destination%\%%F *_en.properties /S