2016-12-06 2 views
-1

Ich arbeite an Batch-Skript, das mit ein paar Ausnahmen alle Dateien aus einem Ordner in einen anderen kopieren muss. Wie ignoriere ich Dateien, die mit "Proxy.dll" enden.Muster in Batch-Dateien ignorieren

Grundsätzlich möchte ich wissen, ist es möglich, Dateien zu ignorieren, die auf einem Teil seines Namens basieren, wenn Sie xcopy verwenden.

Das ist mein Skript

xcopy C:\\WebService %InstallFolder%\ /EXCLUDE:XcopyExclude.txt /e /s /k /r /h /y /i >>Setup.log 

Und das ist XcopyExclude.txt

.config\ 
Properties 
Obj 
*Proxy.dll 

Dank

+1

'Robocopy'-Befehl,'/XF' (Dateien ausschließen) Schalter –

+1

Bitte bearbeiten Sie Ihre Frage und teilen Sie Ihre (erfolglosen) Versuche, einen [mcve] zu befriedigen. – JosefZ

Antwort

0

Die robocopy command bietet eine intelligente Funktion zum Ausschließen (Schalter /XD und /XF) als xcopy tut , die Sie für Ihre Aufgabe verwenden könnten:

robocopy "C:\WebService" "%InstallFolder%" "*.*" /XD "*.config" "Properties" "Obj" /XF "*Proxy.dll" /E /S /FP /NJH /NJS /NS /NC /NDL /NP /LOG+:"Setup.log" 

die Switches sowie die /FP Schaltersteuerung das Auftreten des protokollierten Ausgang mit /N starten, so dass es zu dem der Befehl xcopy sehr ähnlich ist.


Wenn Sie auf der /EXCLUDE Option von xcopy bestehen: diese nicht unterstützt Wildcards wie * oder ? aber wörtliche (Groß- und Kleinschreibung) Strings nur. Sie können die Wildcard jedoch im Voraus in *Proxy.dll auflösen. Angenommen, Sie haben eine Datei XcopyExclude.txt mit folgendem Inhalt ...:

.config\ 
\Properties\ 
\Obj\ 

... (unter der Annahme, dass alle diese Elemente sind (teilweise) Verzeichnisnamen), könnten Sie diesen Inhalt eine temporäre Kopie Datei und fügen Sie den aufgelösten *Proxy.dll Teil, vor der eigentlichen Kopier Aktivität:

rem // Prepare exclusion list file: 
copy /Y "XcopyExclude.txt" "XcopyExclude.tmp" 
>> "XcopyExclude.tmp" (
    for /R "C:\WebService" %%E in ("*Proxy.dll") do (
     echo(\%%~nxE 
    ) 
) 
rem // Perform copying action: 
xcopy "C:\WebService" "%InstallFolder%" /E /S /K /R /H /Y /I /EXCLUDE:XcopyExclude.tmp >> "Setup.log" 
rem // Clean up temporary list file: 
del "XcopyExclude.tmp" 

Nimmt man eine Datei AnyProxy.dll in Quellverzeichnisstruktur, der diesbezügliche Eintrag für Datei XcopyExclude.tmp wäre 0 aufgerufen ist. Beachten Sie, dass ein Artikel mit der Bezeichnung AnyProxy.dll.any versehentlich ebenfalls ausgeschlossen werden würde.

Verwandte Themen