командный файл: передать параметр с пробелами в функцию

Я использую пакетный файл для резервного копирования. Я передаю параметры функции, которая вызывает исполняемый файл упаковки. Это работает, если параметры не содержат пробелов. Это соответствующий код:

SET TARGET="%SAVEDIR%\XP.User.Documents.rar"
SET FILES="%DIRUSER%\Eigene Dateien\*"      
SET EXLUCDE="%DIRUSER%\Documents\CDs" 
call:funcBackup %TARGET% %FILES% %EXLUCDE%

:funcBackup
    SET TARGET=%~1
    SET FILES=%~2
    SET EXCLUDE=%~3     
    echo."%PACKER% a -r -x"%EXCLUDE%" "%TARGET%" "%FILES%""
    ::call %PACKER% a -r -x"%EXCLUDE%" "%TARGET%" "%FILES%"
goto:eof

В XP (немецкая версия)% DIRUSER% расширяется до «Dokumente und Einstellungen»

В этом случае TARGET верен, но FILES == «Dokumente» и EXCLUDE == «und», что означает, что сценарий не работает из-за пробелов в% DIRUSER%.

Как я могу это исправить?

10
задан Matthias Pospiech 13 July 2011 в 20:30
поделиться