Я пытаюсь создать bat-файлы, которые мы можем использовать ежедневно для копирования или перемещения PDF-файлов из подпапок (имена папок меняются ежедневно) в родительскую папку. Я пробовал ниже:

Сначала попытался просто скопировать файлы, используя это .. не сработало

copy "Y:\Print OPS\Annuity Ops\*\*.pdf" "Y:\Print OPS\Annuity Ops"

Далее я попытался составить список файлов, которые нужно скопировать, и использовать их для их копирования, этот список создается из файлов, которые не копируются.

Echo %date%      Sweep Time = %time%       File count = %cnt% > 000_testpdf.txt
echo.>>000_testpdf.txt

dir /b /s *.pdf, /O:N >> 000_testpdf.txt

set logfile=MSOffice_PDF.log

dir /b /s *.pdf,  > 000_testpdf.txt

for /f "delims=" %%i in (000_testpdf.txt) do echo D|xcopy "Y:\Print OPS\Annuity Ops\%%i" "Y:\Print OPS\Annuity Ops%%i" /i /z /y

1 ответ1

0
                               v - disallowed
copy "Y:\Print OPS\Annuity Ops\*\*.pdf" "Y:\Print OPS\Annuity Ops"
                                 ^ allowed

Дикие символы * разрешены только в последней части пути в Windows. Следующий фрагмент кода может помочь:

@ECHO OFF
SETLOCAL EnableExtensions
set "_parent=Y:\Print OPS\Annuity Ops" 
for /D %%G in ("%_parent%\*") do (
  if exist "%%~G\*.pdf" (
    echo copy /B "%%~G\*.pdf" "%_parent%\"
  ) else (
    echo nothig to copy "%%~G\*.pdf" "%_parent%\"
  )
)

Обратите внимание, что приведенный выше код просто отображает команды для выполнения в целях отладки. Замените echo copy /B на рабочую copy /B не раньше, чем отладку. Вы также можете удалить все else ветви.

Ресурсы (требуется чтение):

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .