Пакетный файл Windows и пути обработки с амперсандом - PullRequest
0 голосов
/ 18 июня 2019

Я новичок в программировании пакетных файлов Windows и изо всех сил пытаюсь получить этот код для обработки амперсандов.

Пакетный файл предназначен для создания превью из изображений в одном дереве папок в другое дерево папок с помощью imagemagick. Все работает хорошо, пока на пути нет амперсанда. Двойные кавычки сортируют это для большинства команд, но когда он нажимает «если не существует«% thumbpath% »», он падает, если в% thumbpath% есть амперсанд.

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

@echo off
setlocal enableextensions
cd /D "%~dp0"
call :processFiles
pause
goto :eof

:processFiles
for /R %%f in (*.jpg) do call :processFile "%%f", "%%~nxf", "%%~pf", "%%~df"


:processFile
:: parameters 1=full path, 2=filename, 3=path(no drive no file), 4=drive
setlocal ENABLEDELAYEDEXPANSION
set "source=%~1"
set fileName=%~2
set "folder=%~4%~3"

:: replace media path with thumbs folder
set "folder=%folder:\media\=\media\thumbs\%"

:: create the directory tree if required
if not exist "%folder%" md "%folder%"

set "thumbpath=%folder%%fileName%"

:: the following line causes an error when there is an ampersand in %thumbpath%
if not exist "%thumbpath%" (
    magick "%source%" -resize 250x250 -unsharp  0x6+0.5+0 "%thumbpath%"
)

exit /b

1 Ответ

0 голосов
/ 18 июня 2019

Время исповеди ... У меня была строка в моем коде echo% thumbpath% как раз перед строкой магии. Это был виновник, так как я не цитировал% thumbpath%.

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