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

[文件操作] 批处理怎样在网络文件夹查找文件夹并复制?

网络文件夹 \\1921.68.1.1\name\file\      (地址\共享名\文件夹)
在file文件夹下有不定数量子目录,每个子目录又包含有若干子目录若干层
需要在file层查找名叫 haha文件夹并复制 到本地 d:\123\     xcopy所有
请教各位高人如何?

先用 net use 命令映射到本地可以吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不好,不用 映射的方式,因为共享盘已经隐射本地,并且很多机器盘符不确定
也不用 遍历盘符的方式 很慢,
用For的方式,文件是成功了,文件夹有点难搞,希望高手指点
我在想先得到路径下所有文件夹列表,然后查找列表得到完整路径,后面不会,
  1. set share=“\\192.168.1.1\name\file\”
  2. dir /ad/s/b %share%>>list.txt
复制代码

TOP

回复 3# walong


    把你的for命令发出来,我帮你修改一下试试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 walong 于 2014-9-5 12:13 编辑

回复 4# Batcher
多谢指教!
这是查找文件的方式,需要的是查找文件夹名称方式并对整个文件夹操作
  1. :down_cp
  2. cls
  3. color 5f
  4. echo.
  5. rem set /p getid=请输入需要下载的文件名称:
  6. rem if getid=="p" goto menu
  7. set FileName=%fileid%.km2
  8. echo.
  9. echo 正在查找文件%FileName%.....
  10. for /f "delims=" %%b in ('dir /a-d /s /b "%net_cp%\%FileName%" 2^>nul') do (
  11.             if /i "%%~nxb" equ "%FileName%" (
  12.                xcopy %%b %my_cp% &pause
  13.                goto menu
  14.             )
  15.         )
  16. echo 出错啦!文件没有找到!
  17. pause
  18. goto menu  
复制代码

TOP

我也写了一个,查找速度一般:
  1. @echo off
  2. set "UNCPath=\\nfs02\setup\test"
  3. set "FindName=sky.mp3"
  4. set "DownDir=d:\temp"
  5. Call :_Find_Down_File_UNC  "%UNCPath%"  "%FindName%"  "%DownDir%"
  6. echo Done!
  7. pause
  8. goto :eof
  9. :_Find_Down_File_UNC
  10.   set "UNCPath=%~1"
  11.   set "FindName=%~2"
  12.   set "DownDir=%~3"
  13.   set "TmpLog=%TEMP%\FindFileUNC.log"
  14.   if not exist "%UNCPath%" goto :eof
  15.   if ""=="%FindName%" goto :eof
  16.   if not exist "%DownDir%" goto :eof
  17.   pushd "%UNCPath%" >nul 2>nul || goto :eof
  18.   dir /a-d /s /b "%cd%" > "%TmpLog%"
  19.   for /f "delims=??" %%i in ('type "%TmpLog%"^|find /i "%FindName%"') do (
  20.     REM if "%%~nxi"=="%FindName%" (
  21.       echo %%i
  22.       copy /v /-y /z "%%i" "%DownDir%\"
  23.     REM )
  24.   )
  25.   popd
  26.   goto :eof
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 6# yu2n

查找文件夹名称haha  返回完整路径 不确定文件夹haha下面有什么类型文件
定位haha 并复制haha整个文件夹,示例是查找文件方式,要查找文件夹,
本案例 文件夹名称由指向性,关键信息命名文件夹并保存与之相关所有文件

TOP

本帖最后由 apang 于 2014-9-5 13:54 编辑
  1. @echo off
  2. set "share=\\192.168.1.1\name\file"
  3. set "fd=haha"
  4. for /f "delims=" %%a in ('dir /ad /b /s "%share%\%fd%?"') do (
  5.         if /i "%%~nxa" == "%fd%" (
  6.                 xcopy /s /h /c /y "%%a\*" "d:\123\"
  7.         )
  8. )
  9. pause
复制代码

TOP

本帖最后由 yu2n 于 2014-9-5 13:43 编辑

回复 7# walong
原来是查找文件夹,跟查文件的区别不大,改改就可以了……
  1. @echo off
  2. set "UNCPath=\\192.168.1.1\name\file\"
  3. set "FindName=haha"
  4. set "DownDir=d:\123"
  5. Call :_Find_Folder_UNC  "%UNCPath%"  "%FindName%"  "%DownDir%"
  6. echo Done!
  7. pause
  8. goto :eof
  9. :_Find_Folder_UNC
  10.   set "UNCPath=%~1"
  11.   set "FindName=%~2"
  12.   set "DownDir=%~3"
  13.   set "TmpLog=%TEMP%\FindFolderUNC.log"
  14.   if not exist "%UNCPath%" goto :eof
  15.   if ""=="%FindName%" goto :eof
  16.   if not exist "%DownDir%" goto :eof
  17.   pushd "%UNCPath%" >nul 2>nul || goto :eof
  18.   dir /ad /s /b "%cd%" > "%TmpLog%"
  19.   for /f "delims=??" %%i in ('type "%TmpLog%"^|find /i "%FindName%"') do (
  20.     REM if "%%~ni"=="%FindName%" (
  21.       echo %%i
  22.       xcopy /c /d /e /h /i /r /v /y /z "%%i" "%DownDir%\%%~ni"
  23.     REM )
  24.   )
  25.   popd
  26.   goto :eof
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 8# apang

多谢指教!
测试成功。

TOP

回复 9# yu2n

直接显示Done!然后没了

TOP

返回列表