Board logo

标题: [文本处理] 批处理如何根据文件名从文件夹中搜索子文件夹,并复制出来? [打印本页]

作者: 大人大仙    时间: 2018-10-15 14:59     标题: 批处理如何根据文件名从文件夹中搜索子文件夹,并复制出来?

背景:
1. E:\file\finsh  是源文件;
2.  查找条件为文本文档,命名为 文件名;
3.  查询结果为  搜索复制结果;

以上背景,在运用以下程序时,出现:搜索复制结果 的文件夹会显示出来,但是文件夹内无任何结果。 请各位大神指教,是哪里出了问题? 急切盼回复,谢谢~~
  1. @echo off
  2. md E:\file\搜索复制结果
  3. for /f "delims=" %%a in (文件名.txt) do (
  4.    for /f "delims=" %%b in ('dir /a-d /b /s E:\file\finsh') do (
  5. set "str=%%~nb"
  6. setlocal enabledelayedexpansion
  7. if not "!str:%%a=!"=="!str!" (endlocal &move "%%b" E:\file\搜索复制结果)
  8. endlocal
  9. )
  10. )
  11. pause
复制代码

作者: flashercs    时间: 2018-10-15 15:16

echo on打开看看运行过程啊
作者: 大人大仙    时间: 2018-10-15 16:11

回复 2# flashercs
作者: Batcher    时间: 2018-10-15 16:15

回复 3# 大人大仙


把 @echo off 删掉
代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到详细的报错信息或者线索
作者: 大人大仙    时间: 2018-10-15 17:02

回复 4# Batcher


您好,test后,报错如下,求大神继续指导
作者: xczxczxcz    时间: 2018-10-15 17:34

本帖最后由 xczxczxcz 于 2018-10-15 18:00 编辑

越看越混乱了,你是要找到相同的就移动过去?还是不相同的就移动?
作者: flashercs    时间: 2018-10-15 18:18

本帖最后由 flashercs 于 2018-10-15 18:20 编辑
  1. @echo off
  2. md E:\file\搜索复制结果\
  3. set "tmpfile=%temp%\$%random%$"
  4. for /f "delims=" %%A in (文件名.txt) do echo,[^^\\]*%%A[^^\\]*>>"%tmpfile%"
  5. for /f "delims=" %%B in ('"dir /a-d /b /s E:\file\finsh|findstr /ieg:"%tmpfile%""') do move "%%B" E:\file\搜索复制结果\
  6. del /q "%tmpfile%"
  7. pause
  8. exit /b
复制代码

作者: Batcher    时间: 2018-10-15 21:03

回复 5# 大人大仙


    这个没错啊,Thumbs不等于215434520,所以不会执行move命令
作者: lifei259    时间: 2018-10-19 14:10

  1. @echo off
  2. md E:\file\搜索复制结果
  3. for /f "delims=" %%a in (文件名.txt) do (
  4.    for /f "delims=" %%b in ('dir /a-d /b /s E:\file\finsh') do (
  5.         if  "%%~nb"=="%%a" (move "%%~sb" E:\file\搜索复制结果)
  6.    )
  7. pause
复制代码





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