[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何根据txt文本列出的文件名批量查找指定文件夹里的文件并复制到新的文件夹

本帖最后由 pcl_test 于 2017-5-2 12:41 编辑

请帮忙:批处理如何批量查找文件夹并复制到指定文件夹
问题描述
1、D:\文件夹1(含有子文件夹)
2、需要查找的文件名字列表已经存储在1.txt文档中了。
3、按1.txt文档中文件名字列表批量查找文件,并复制到d:\文件夹2中。
4、如果1.txt文档中某个文件没有在D:\文件夹1(含有子文件夹)中找到,将文件名复制到另2.txt

请教该怎么写?

FOR+FORFILES搞定
想代写请左转有偿区或联系我。

TOP

  1. @echo off
  2. for /f "delims=" %%a in (1.txt) do (
  3. for /f "delims=" %%i in ('dir /a-d /s /b "D:\文件夹1\%%a"') do (
  4. if "%%i"=="找不到文件" (
  5. echo;%%a>>2.txt
  6. set n+=1
  7. ) else (
  8. copy /y "%%~fi" D:\文件夹2\
  9. set m+=1
  10. )
  11. )
  12. )
  13. echo;找到%m%个,有%n%个没找到
  14. pause>nul
复制代码
新手作业

TOP

回复 3# taofan712


    按照您的做法,文件是能找到,但找不到的文件没有显示到2.txt里哦,请大神再帮帮忙,谢谢!

TOP

楼主的第4点三楼貌似不能实现,请再帮帮忙~

TOP

本帖最后由 taofan712 于 2017-5-2 16:03 编辑
  1. @echo off
  2. for /f "delims=" %%a in (1.txt) do (
  3.     for /f "delims=" %%i in ('dir /a-d /s /b "D:\文件夹1\%%a"^|^|echo;%%a^>^>2.txt') do copy /y "%%~fi" D:\文件夹2\
  4. )
  5. pause>nul
复制代码
1

评分人数

TOP

@echo off
call :t D:\1.txt D:\文件夹1 D:\文件夹2 D:\2.txt

goto :eof
:t
    for /f "usebackq delims=" %%a in (%1) do (
        for /r "%~f2" %%b in (
            "%%~nxa"
        ) do copy "%%~b" %3
        if not exist "%~3\%%~nxa" echo %%a >> %4
    )
    goto :eof
1

评分人数

TOP

回复 7# nidnil


    完美成功了,感谢大神帮忙!!!好人一生平安。

TOP

回复 6# taofan712


    感谢大哥,成功了,好人一生平安!

TOP

本帖最后由 pcl_test 于 2017-5-3 02:39 编辑
  1. @echo off
  2. powershell ^
  3.     $fileList='1.txt';^
  4.     $notExists='2.txt';^
  5.     $srcFolder='D:\文件夹1\';^
  6.     $desFolder='D:\文件夹2\4567';^
  7.     $m=@{};$s='';^
  8.     if(-not (Test-Path -Literal $desFolder)){md $desFolder^|out-null};^
  9.     gc $fileList^|?{$_ -notmatch '^^\s*$'}^|%%{if(!$m[$_.trim().ToLower()]){$m[$_.trim().ToLower()]=1;}};^
  10.     dir -Literal $srcFolder -r^|?{$_ -is [System.IO.FileInfo]}^|%%{^
  11.         $tmp=$_.Name.ToLower();^
  12.         if($m[$tmp]){^
  13.             if($m[$tmp] -le 1){^
  14.                 cp -Literal $_.FullName $desFolder -Force;^
  15.             }else{^
  16.                  ^<#处理同名文件#^>^
  17.                 $newname=$_.BaseName+'_('+($m[$tmp]-1)+')'+$_.Extension;^
  18.                 cp -Literal $_.FullName (Join-Path $desFolder $newname) -Force;^
  19.             };^
  20.             $m[$tmp]+=1;^
  21.     };};^
  22.     foreach($a in $m.keys){if($m[$a] -eq 1){$s+=$a+\"`r`n\";}};^
  23.     if($s){Set-Content $notExists -value $s}
  24. pause
复制代码
1

评分人数

TOP

请教大神:批处理如何批量查找文件夹并复制到指定文件夹
问题描述
1、D:\文件夹1(含有子文件夹)
2、需要查找的文件夹名字列表已经存储在1.txt文档中了。
3、按1.txt文档中文件夹名字列表批量查找文件夹,并复制到d:\文件夹2中。
4、如果1.txt文档中某个文件没有在D:\文件夹1(含有子文件夹)中找到,将文件名复制到另2.txt

请教该怎么写?按照上面代码复制的单独文件,现在需要复制文件夹

TOP

回复 11# libin1n


    @echo off
for /f "tokens=*" %%a in (1.txt) do (
  if exist D:\文件夹1\%%a" (
    xcopy  D:\文件夹1\%%a" "D:\文件夹2\%%a" /Y /E /I /Q
  )
)
pause




这个是复制过去了  ,查找不到的没有列举出来

TOP

返回列表