标题: [文件操作] 批处理怎样在网络文件夹查找文件夹并复制? [打印本页]
作者: walong 时间: 2014-9-5 09:05 标题: 批处理怎样在网络文件夹查找文件夹并复制?
网络文件夹 \\1921.68.1.1\name\file\ (地址\共享名\文件夹)
在file文件夹下有不定数量子目录,每个子目录又包含有若干子目录若干层
需要在file层查找名叫 haha文件夹并复制 到本地 d:\123\ xcopy所有
请教各位高人如何?
作者: Batcher 时间: 2014-9-5 09:23
先用 net use 命令映射到本地可以吗?
作者: walong 时间: 2014-9-5 10:07
不好,不用 映射的方式,因为共享盘已经隐射本地,并且很多机器盘符不确定
也不用 遍历盘符的方式 很慢,
用For的方式,文件是成功了,文件夹有点难搞,希望高手指点
我在想先得到路径下所有文件夹列表,然后查找列表得到完整路径,后面不会,- set share=“\\192.168.1.1\name\file\”
- dir /ad/s/b %share%>>list.txt
复制代码
作者: Batcher 时间: 2014-9-5 10:13
回复 3# walong
把你的for命令发出来,我帮你修改一下试试。
作者: walong 时间: 2014-9-5 10:31
本帖最后由 walong 于 2014-9-5 12:13 编辑
回复 4# Batcher
多谢指教!
这是查找文件的方式,需要的是查找文件夹名称方式并对整个文件夹操作- :down_cp
- cls
- color 5f
- echo.
- rem set /p getid=请输入需要下载的文件名称:
- rem if getid=="p" goto menu
- set FileName=%fileid%.km2
- echo.
- echo 正在查找文件%FileName%.....
- for /f "delims=" %%b in ('dir /a-d /s /b "%net_cp%\%FileName%" 2^>nul') do (
- if /i "%%~nxb" equ "%FileName%" (
- xcopy %%b %my_cp% &pause
- goto menu
- )
- )
- echo 出错啦!文件没有找到!
- pause
- goto menu
复制代码
作者: yu2n 时间: 2014-9-5 11:32
我也写了一个,查找速度一般:- @echo off
- set "UNCPath=\\nfs02\setup\test"
- set "FindName=sky.mp3"
- set "DownDir=d:\temp"
- Call :_Find_Down_File_UNC "%UNCPath%" "%FindName%" "%DownDir%"
- echo Done!
- pause
-
- goto :eof
- :_Find_Down_File_UNC
- set "UNCPath=%~1"
- set "FindName=%~2"
- set "DownDir=%~3"
- set "TmpLog=%TEMP%\FindFileUNC.log"
- if not exist "%UNCPath%" goto :eof
- if ""=="%FindName%" goto :eof
- if not exist "%DownDir%" goto :eof
- pushd "%UNCPath%" >nul 2>nul || goto :eof
- dir /a-d /s /b "%cd%" > "%TmpLog%"
- for /f "delims=??" %%i in ('type "%TmpLog%"^|find /i "%FindName%"') do (
- REM if "%%~nxi"=="%FindName%" (
- echo %%i
- copy /v /-y /z "%%i" "%DownDir%\"
- REM )
- )
- popd
- goto :eof
复制代码
作者: walong 时间: 2014-9-5 12:11
回复 6# yu2n
查找文件夹名称haha 返回完整路径 不确定文件夹haha下面有什么类型文件
定位haha 并复制haha整个文件夹,示例是查找文件方式,要查找文件夹,
本案例 文件夹名称由指向性,关键信息命名文件夹并保存与之相关所有文件
作者: apang 时间: 2014-9-5 13:07
本帖最后由 apang 于 2014-9-5 13:54 编辑
- @echo off
- set "share=\\192.168.1.1\name\file"
- set "fd=haha"
- for /f "delims=" %%a in ('dir /ad /b /s "%share%\%fd%?"') do (
- if /i "%%~nxa" == "%fd%" (
- xcopy /s /h /c /y "%%a\*" "d:\123\"
- )
- )
- pause
复制代码
作者: yu2n 时间: 2014-9-5 13:38
本帖最后由 yu2n 于 2014-9-5 13:43 编辑
回复 7# walong
原来是查找文件夹,跟查文件的区别不大,改改就可以了……- @echo off
- set "UNCPath=\\192.168.1.1\name\file\"
- set "FindName=haha"
- set "DownDir=d:\123"
- Call :_Find_Folder_UNC "%UNCPath%" "%FindName%" "%DownDir%"
- echo Done!
- pause
-
- goto :eof
- :_Find_Folder_UNC
- set "UNCPath=%~1"
- set "FindName=%~2"
- set "DownDir=%~3"
- set "TmpLog=%TEMP%\FindFolderUNC.log"
- if not exist "%UNCPath%" goto :eof
- if ""=="%FindName%" goto :eof
- if not exist "%DownDir%" goto :eof
- pushd "%UNCPath%" >nul 2>nul || goto :eof
- dir /ad /s /b "%cd%" > "%TmpLog%"
- for /f "delims=??" %%i in ('type "%TmpLog%"^|find /i "%FindName%"') do (
- REM if "%%~ni"=="%FindName%" (
- echo %%i
- xcopy /c /d /e /h /i /r /v /y /z "%%i" "%DownDir%\%%~ni"
- REM )
- )
- popd
- goto :eof
复制代码
作者: walong 时间: 2014-9-5 14:36
回复 8# apang
多谢指教!
测试成功。
作者: walong 时间: 2014-9-5 14:48
回复 9# yu2n
直接显示Done!然后没了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |