Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 以任何特定模式从最新文件夹复制pdf文件_Batch File - Fatal编程技术网

Batch file 以任何特定模式从最新文件夹复制pdf文件

Batch file 以任何特定模式从最新文件夹复制pdf文件,batch-file,Batch File,我创建了一个.bat,它将在指定的服务器中复制pdf文件。文件的文件夹结构如下所示: \\server\ '----010000-0000\ '----010000-0000-0705-1\ '-------010000-0000-DATA.pdf '----010000-0000-0705-2\ '-------010000-0000-DATA.pdf set /p code=Input Control Number:

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

\\server\
 '----010000-0000\
      '----010000-0000-0705-1\
            '-------010000-0000-DATA.pdf
      '----010000-0000-0705-2\
            '-------010000-0000-DATA.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%"
010000-0000
是用户将输入的代码。然后batch将使用代码作为文件名的确切文件夹进行搜索,并且必须复制pdf文件

我的问题是pdf文件之前的文件夹总是有4个随机数,即
0705
(例如)。我想的是通过这个文件夹,不管4个随机数的值是多少。复制pdf文件的步骤

例如(如果要执行静态代码,则如下所示):

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

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


这是假设较新版本的目录总是在先前版本之后创建的:

@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%"
@echo关闭
设置fp=
设置/p“代码=输入控制编号:”
设置cnt=0
:开始
对于/f“delims=“%%a in('dir/b/s/ad/o-d”%fp%\%code%“^ findstr”%code%“^ more+%cnt%'),请执行以下操作:(
如果存在“%%~a\%code%-DATA.pdf”(
设置“已找到=%%~a”
后藤:完成了
)否则(
如果%cnt%eq 10转到:eof
设置/a cnt+=1
开始
)
)
:完成
设置碳纳米管=
xcopy“%found%\%code%%DATA.pdf”“%USERPROFILE%\Desktop\Backup\%code%\”/D/E/C/I/Y/H
启动“”%USERPROFILE%\Desktop\Backup\%code%“

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

读取并删除。哪里定义了
code
。。用户将只输入代码,然后批处理将查找其文件夹..您的模式似乎类似于@jwdonahue yes..那么您想实现什么呢?如果你读过,我们就不用玩20个问题了。我想我们有一个共同的目标。如果你想忽略1705,不要看或想它。这有多难?你的剧本应该做什么?还有一件事。如果循环找不到任何现有文件夹怎么办?我怎样才能终止它呢?这很简单,我们可以对版本设置一个限制。我将以10为上限更新答案。你可以调整一下。
@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%"