2011-07-13 20 views
8

işlevini yerine getirmek için beyaz boşluklarla geçirin Yedeklemeler için bir toplu iş dosyası kullanıyorum. Seçenekleri, paketleme yürütülebilir dosyasını çağıran bir işleve iletiyorum. Parametreler whitespaces içermedikçe çalışır. Bu, ilgili kodudur:toplu iş dosyası: parametre

XP'de
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 

(Alman versiyonu)% DIRUSER% Bu durumda TARGET alan "Dokumente und Einstellungen"

genişler olduğu doğru, ama DOSYALAR == "Dokumente" ve EXCLUDE = = "und", ; bu, komut dosyasının% DIRUSER% cinsinden whitespaces nedeniyle başarısız olduğu anlamına gelir.

Bunu nasıl düzeltebilirim?

cevap

12

sorun değişkenleri atama stil gibi görünüyor.
Sana DIRUSER içeriği daha sonra "Dokumente und Einstellungen" olan diğerleri

set DIRUSER="Dokumente und Einstellungen" 

Fakat böyle DIRUSER değişkeni ayarlamak varsayalım, bu yüzden tırnak içeriğin bir parçasıdır.

Ancak SET FILES="%DIRUSER%\Eigene Dateien\*"SET FILES=""Dokumente und Einstellungen"\Eigene Dateien\*"'a genişler.

set genişletilmiş stilini kullanabilirsiniz.
set "var=content" Bu, var içeriğini content için herhangi bir tırnak işareti olmadan ayarlar ve ayrıca son alıntıların ardındaki tüm eklenen alanlar göz ardı edilir.

Yani kod olurdu

set "SAVEDIR=D:\backup" 
set "diruser=Dokumente und Einstellungen" 
SET "TARGET=%SAVEDIR%\XP.User.Documents.rar" 
SET "FILES=%DIRUSER%\Eigene Dateien\*"  
SET "EXLUCDE=%DIRUSER%\Documents\CDs" 
call:funcBackup "%TARGET%" "%FILES%" "%EXLUCDE%" 
goto :eof 

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