首页 > 解决方案 > 以任何特定模式从最新文件夹中复制 pdf 文件

问题描述

我创建了一个 .bat,它将在指定的服务器中复制 pdf 文件。文件的文件夹结构是这样的:

\\server\
 '----010000-0000\
      '----010000-0000-0705-1\
            '-------010000-0000-DATA.pdf
      '----010000-0000-0705-2\
            '-------010000-0000-DATA.pdf

010000-0000是用户将输入的代码。然后批处理将使用代码作为文件名的确切文件夹进行搜索,并且必须复制 pdf 文件。

我的问题是pdf文件之前的文件夹总是有一个4个随机数0705(例如)。我在想的是通过那个文件夹,无论 4 个随机数的值是多少。复制 pdf 文件

例如(如果会做一个静态代码,它会是这样的):

set /p code=Input Control Number:
goto FILE

:FILE
set VER=0

:FILE1
set /a VER +=1
if exist "%fp%\%CODE%\%CODE%-0705-%VER%\%CODE%-DATA.pdf" goto FPCOPY
IF NOT EXIST ELSE GOTO FILE1

:FPCOPY
xcopy "%fp%\%CODE%\%CODE%-0705-%VER%\%CODE%-DATA.pdf" "%HOMEPATH%\Desktop\Backup\%CODE%\" /D /E /C /I /Y /H
start "" "%HOMEPATH%\Desktop\Backup\%code%"

它肯定会复制数据。但正如我所说,4位数字总是随机的。

我试过的是这个(我只用*替换4位数字):

set /p code=Input Control Number:
goto FILE

:FILE
set VER=0

:FILE1
set /a VER +=1
if exist "%fp%\%CODE%\%CODE%-*-%VER%\%CODE%-DATA.pdf" goto FPCOPY
IF NOT EXIST ELSE GOTO FILE1

:FPCOPY
xcopy "%fp%\%CODE%\%CODE%-*-%VER%\%CODE%-DATA.pdf" "%HOMEPATH%\Desktop\Backup\%CODE%\" /D /E /C /I /Y /H
start "" "%HOMEPATH%\Desktop\Backup\%code%"

标签: batch-file

解决方案


这是假设更高版本的目录总是在之前的版本之后创建:

@echo off
set fp=<SET YOUR FILEPATH HERE>
set /p "code=Input Control Number: "
set cnt=0
    :start
    for /f "delims=" %%a in ('dir /b /s /ad /o-d "%fp%\%code%" ^| findstr "%code%" ^|more +%cnt%') do (
       if exist "%%~a\%code%-DATA.pdf" (
           set "found=%%~a"
           goto :done
    ) else (
     if %cnt% equ 10 goto :eof
     set /a cnt+=1
     goto start
 )
)
    :done
    set cnt=
    xcopy "%found%\%code%-DATA.pdf" "%USERPROFILE%\Desktop\Backup\%code%\" /D /E /C /I /Y /H
    start "" "%USERPROFILE%\Desktop\Backup\%code%"

我们实际上只是检查文件的最新文件夹,如果它不存在,我们跳过该文件夹并尝试旧版本,直到找到它,然后复制文件。


推荐阅读