Если существует, больше не работает в командном файле - PullRequest
0 голосов
/ 10 сентября 2018

У меня проблема с пакетом. Он сканирует папки для новых файлов PDF, распечатать, переместить и удалить их. Работало нормально, пока внезапно не остановилось без ошибок. Если я ввожу его вручную в cmd, он вызывает «путь к файлу не существует», но это правильный путь. Я понятия не имею, может быть, некоторые могут помочь или имеют ту же проблему.

Заранее благодарю за помощь.

@echo off

:pdfprint

echo Checkin Druck - bitte offen lassen

IF EXIST *.pdf for %%p in ("C:\Users\Public\Documents\Lexware\bueroeasy\Daten\eRechnung\signed\*.pdf") do ( start /b "Print" "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /n /t "%%p"

ping 127.0.0.1 -n 10

%windir%\system32\taskkill.exe /F /IM AcroRd32.exe

ping 127.0.0.1 -n 5

xcopy "C:\Users\Public\Documents\Lexware\bueroeasy\Daten\eRechnung\signed\*.pdf" "C:\Users\Textilpflege\Desktop\backup\"
ping 127.0.0.1 -n 2
move "%%p" "C:\Users\Textilpflege\Documents\Belegtransfer\9860-11206\Rechnungsausgang\"
IF EXIST *.pdf for %%p in ("C:\Users\Public\Documents\Lexware\bueroeasy\Daten\eRechnung\signed\*.pdf") do DEL *.pdf

)
IF EXIST *.pdf for %%p in ("C:\Users\Public\Documents\Lexware\bueroeasy\Daten\Poststelle\*.pdf") do ( start /b "Print" "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /n /t "%%p"

ping 127.0.0.1 -n 10

%windir%\system32\taskkill.exe /F /IM AcroRd32.exe

ping 127.0.0.1 -n 5
xcopy "C:\Users\Public\Documents\Lexware\bueroeasy\Daten\Poststelle\*.pdf" "C:\Users\Textilpflege\Desktop\backup\"
ping 127.0.0.1 -n 2
move "%%p" "C:\Users\Textilpflege\Documents\Belegtransfer\9860-11206\Rechnungsausgang\"
IF EXIST *.pdf for %%p in ("C:\Users\Public\Documents\Lexware\bueroeasy\Daten\Poststelle\*.pdf") do DEL *.pdf

)

goto :pdfprint

1 Ответ

0 голосов
/ 10 сентября 2018

Позвольте мне изменить скрипт с некоторыми изменениями. Во-первых, я не уверен, почему вы хотите проверить, существуют ли файлы локально, а затем выполните удаление для другого каталога. Кроме того, давайте сменим ping на timeout

@echo off
:pdfprint
echo Checkin Druck - bitte offen lassen

for %%a in ("C:\Users\Public\Documents\Lexware\bueroeasy\Daten\eRechnung\signed\*.pdf") do (
    start /b "Print" "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /n /t "%%a"
    timeout 10
    %windir%\system32\taskkill.exe /F /IM AcroRd32.exe
    timeout 5
    xcopy "C:\Users\Public\Documents\Lexware\bueroeasy\Daten\eRechnung\signed\*.pdf" "C:\Users\Textilpflege\Desktop\backup\"
    timeout 2
    move "%%a" "C:\Users\Textilpflege\Documents\Belegtransfer\9860-11206\Rechnungsausgang\"
    del "C:\Users\Public\Documents\Lexware\bueroeasy\Daten\eRechnung\signed\*.pdf"
 )
for %%d in ("C:\Users\Public\Documents\Lexware\bueroeasy\Daten\Poststelle\*.pdf") do (
    start /b "Print" "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /n /t "%%d"
    timeout 5
    %windir%\system32\taskkill.exe /F /IM AcroRd32.exe
    timeout 5
    xcopy "C:\Users\Public\Documents\Lexware\bueroeasy\Daten\Poststelle\*.pdf" "C:\Users\Textilpflege\Desktop\backup\"
    timeout 2
    move "%%d" "C:\Users\Textilpflege\Documents\Belegtransfer\9860-11206\Rechnungsausgang\"
    del "C:\Users\Public\Documents\Lexware\bueroeasy\Daten\Poststelle\*.pdf"
 )
goto :pdfprint

Проблема!

  1. слишком много для циклов, где они не нужны. Вы делаете for %%p in (path\to\*.pdf) del *.pdf настолько эффективно, говоря, для каждого pdf, удалите все pdf. Просто сделайте del path\*.pdf без ненужных циклов.

  2. Вы назначаете одинаковое значение токена %%p для 2 для циклов, вместо этого я добавил %%a и %%d

  3. Операторы if существующие бесполезны, так как вы проверяете, существуют ли локально * .pdf, но удаляете в другой папке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...