批处理文件以在目录中搜索文件列表并复制到单个文件夹

时间:2019-02-20 13:17:00

标签: windows batch-file

我有一个.txt文件,其中包含网络驱动器(M :)上的文件列表。我需要一个批处理文件来浏览该列表,搜索该驱动器上单个文件夹的子目录中的文件,然后将它们复制到另一个文件夹。我已经尝试了很多解决方案,但是没有运气。

文本文件是文件和扩展名的列表,即

abc.step
afer.iges
ca76dc7d.sldprt

这是我到目前为止尝试过的

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
cls
set dest=C:\Users\kduquette.000\Desktop\Files 
for /f "TOKENS=*" %%f in (C:Desktop\Files\list.txt) do (
  set i=1
  for /f "tokens=*" %%F IN ('dir M: "%%~f"') Do (
    for %%N in ("%%F") Do (
      set name=%%~NN
      set ext=%%~XN
    )
    copy "%%~F" "%dest%\!name!_!i!!ext!"
    set /A i=!i!+1
  ) 
)
ENDLOCAL

1 个答案:

答案 0 :(得分:0)

我们可以检查文件是否存在并复制:

@echo off
set "dest=C:\Users\kduquette.000\Desktop\Files"
for /f "delims=" %%i in (C:\Desktop\Files\list.txt) do if exist "M:\Cads\%%i" echo copy "M:\Cads\%%i" "%dest%" 

请注意,目前,我在复制字符串中添加了echo,因此您可以首先测试结果。对结果满意后,删除echo

但是,如果您要搜索文件,请在M:\驱动器中递归搜索,然后:

@echo off
set "dest=C:\Users\kduquette.000\Desktop\Files"
for /f "delims=" %%i in (C:\Desktop\Files\list.txt) do (
    pushd M:\
    for /f "delims=" %%a in ('dir /b /s "%%i"') do echo copy "%%~fa" "%dest%"
    popd
)