搜索并移动目录中的所有文件,但同时保留两个文件

时间:2014-06-17 19:39:31

标签: windows file batch-file copy

我想复制分配(声音)文件,这些都是不同的声音,但大多数文件名都是相同的......文件位于子文件夹中,其中包含随机字符作为名称。

如何搜索并将所有随机子文件夹中的所有声音文件复制到一个文件夹?但保持两个文件都是双倍的,不要覆盖它们,如:

  

而不仅仅是:Ambient.wav

     

对此:环境(1).wav Ambient(2).wav Ambient(3).wav等...

我使用Windows 7 Ultimate

1 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN (
 'dir /s /b /a-d "%sourcedir%\*" '
 ) DO (
 IF EXIST "%destdir%\%%~nxa" (
  SET notfound=Y
  FOR /L %%b IN (1,1,999) DO IF DEFINED notfound IF NOT EXIST "%destdir%\%%~na(%%b)%%~xa" (
   ECHO(COPY "%%a" "%destdir%\%%~na(%%b)%%~xa"
   SET "notfound="
  )
  IF DEFINED notfound ECHO(Failed to COPY "%%a"
 ) ELSE (ECHO(COPY "%%a" "%destdir%\%%~nxa"
 )
)

GOTO :EOF

为了测试目的,所需的COPY命令仅为ECHO在您确认命令正确后,将ECHO(COPY更改为COPY以实际复制文件。

当然,如果您愿意,copy可能会成为move

目标目录不应该是源的子目录。

如果需要,您可以将>nul添加到copy以取消copied消息。

我为所有文件使用了*的掩码。如果您只想说.jpg s,请将"%sourcedir%\*"更改为"%sourcedir%\*.jpg"