我是批处理脚本的新手。
我需要编写一个批处理脚本来搜索位于网络驱动器目录中的特定文件(通常是.zip或.7z扩展名)(包含多个名称空间的文件夹和子文件夹)并将其复制到我的本地驾驶。 另外,我需要复制一个包含“elf”关键字的zip文件,该文件也位于我文件所在的同一目录中。
例如:
搜索文件:abc.zip
网络驱动器:\ abc.com \ test
所以基本上我需要在网络目录(包括子文件夹)中搜索我的文件abc.zip,如果发现将其复制到我的本地驱动器(比如c:\ Temp),我还需要复制* elf *文件到同一本地目录。
先谢谢。
答案 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)并将所需文件复制到目标文件夹。