需要批处理脚本来搜索和复制网络驱动器中的特定文件

时间:2013-12-22 20:32:54

标签: batch-file

我是批处理脚本的新手。

我需要编写一个批处理脚本来搜索位于网络驱动器目录中的特定文件(通常是.zip或.7z扩展名)(包含多个名称空间的文件夹和子文件夹)并将其复制到我的本地驾驶。 另外,我需要复制一个包含“elf”关键字的zip文件,该文件也位于我文件所在的同一目录中。

例如:

搜索文件:abc.zip

网络驱动器:\ abc.com \ test

所以基本上我需要在网络目录(包括子文件夹)中搜索我的文件abc.zip,如果发现将其复制到我的本地驱动器(比如c:\ Temp),我还需要复制* elf *文件到同一本地目录。

先谢谢。

3 个答案:

答案 0 :(得分:0)

您是否考虑过使用扩展复制实用程序(xcopy)?语法就像

一样简单
xcopy "<directoryToCopyFrom>" "<directoryToCopyTo>" /C /S /D /Y /I

假设您要编写Windows批处理脚本,这将有效。

搜索“精灵”字符串会有点棘手。您可以考虑使用Java执行此操作,然后从Java程序中调用批处理文件。

答案 1 :(得分:0)

for /d /r "drive:\abc.com\test" %%A in (*) do (
    if exist "%%~A\abc.zip" copy "%%~A\abc.zip" "C:\Temp"
    if exist "%%~A\*elf*" copy "%%~A\*elf*" "C:\Temp"
)

答案 2 :(得分:0)

@echo off

    rem Prepare environment
    setlocal enableextensions

    rem Configure paths
    set "source=\abc.com\test"
    set "target=c:\test"

    rem Change drive/path to source of files
    pushd "%source%"

    rem Recurse folders searching adecuated files and when found, copy to target
    for /f "tokens=*" %%f in ('dir /s /b "abc.*z*" ^| findstr /i /e /c:".zip" /c:".7z"') do (
        copy /y "%%~ff" "%target%"
        if exist "%%~dpf\*elf*.zip" copy /y "%%~dpf\*elf*.zip" "%target%"
    )

    rem Return to previous drive/path
    popd

    rem Clean
    endlocal

这将在源文件夹层次结构中搜索指定的文件名,并根据文件扩展名(.*z*匹配.zip,.7z等)搜索近似匹配,过滤文件扩展名仅接受所需的案例(.zip和.7z)并将所需文件复制到目标文件夹。