Board logo

标题: [文件操作] 急求!批处理如何根据列表文件查找(含子目录)并复制文件到目标地址(也包含子目录)? [打印本页]

作者: lamister    时间: 2020-4-23 14:39     标题: 急求!批处理如何根据列表文件查找(含子目录)并复制文件到目标地址(也包含子目录)?

本帖最后由 lamister 于 2020-4-23 17:17 编辑

请教各位大神,根据文本文件1.txt,该文件每行是一个文件名(不含扩展名),如下所示:
rink
bang
nine
hkjgkljkhkgj
jfkjgklhkglkjl

查找指定文件夹e:/2(一定要包括子文件夹)下匹配的文件(完全匹配,不区分大小写),如果找到:
1.将找到的文件复制到指定文件夹e:/3和d:/3
2.将找到的文件的文件名写入4.txt,格式为每行“文件名”+空格+“[sound:_文件名.扩展名]”,未找到的文件不写入,如下所示:
rink [sound:_rink.mp3]
bang [sound:_bang.mp3]
nine [sound:_nine.wav]

最后显示总查找条数,找到条数,未找到条数。

文本文件编码UTF-8。
请问如何才能实现?

我的问题:下面代码是我从论坛搜索得到,基本能实现我的需求,但是这段代码去查找了子目录,但在复制过去时,并没有根据源目录结构,建立对应的目录结构。请教该如何修改下面代码,可以实现复制指定所有子目录下文件后,到目标路径下会根据源的目录结构创建对应的目录结构并复制文件。谢谢!
  1. @echo off & setlocal EnableDelayedExpansion
  2. cd/d "%~dp0"
  3. pushd "%~dp0"
  4. for /f "delims=" %%a in ('type 1.txt') do (
  5.    set "name="
  6.    set /a total+=1
  7.    for /f "delims=" %%e in ('dir/a-d/b/s "e:\2\%%a.*"') do (
  8.       pushd "%%~dpe"
  9.       if "%%~xe" neq "" if /i exist "%%~nxe" (
  10.         set /a num+=1
  11.         set "name=true"
  12.         echo 复制 %%~nxe  到 [e:\3] && copy /y "%%~nxe" "e:\3">nul 2>&1
  13.         echo 复制 %%~nxe  到 [d:\4] && copy /y "%%~nxe" "d:\4">nul 2>&1
  14.         echo %%~ne [sound:_%%~nxe]>>"%~dp04.txt")
  15.         popd
  16.         )
  17.    if not defined name set /a number+=1
  18.    )
  19. echo. & echo 总查找[%total%]条, 找到[%num%]条, 未找到[%number%]条。
  20. pause
复制代码
请教,基于上面的代码,我该如何修改,才能在复制过去的目标目录里包含对应的子目录?
作者: lamister    时间: 2020-4-23 17:11

自顶,还请大家指点下,目的就是修改这段代码,能够让复制过去的文件按照源的目录结构存放文件。谢谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2