2016-12-06 112 views
-1

我正在處理需要將所有文件從一個文件夾複製到另一個文件夾的批處理腳本,但有一些例外。 如何忽略以「Proxy.dll」結尾的文件。忽略批處理文件中的模式

基本上,我想知道是否有可能在使用xcopy時忽略基於部分名稱的文件。

這是我的腳本

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

這是XcopyExclude.txt

.config\ 
Properties 
Obj 
*Proxy.dll 

感謝

+1

'Robocopy'命令,'/ XF'(不包括文件)開關 –

+1

請編輯您的問題並分享您的(不成功)嘗試以滿足[mcve]。 – JosefZ

回答

0

robocopy command提供了更加智能的排除功能(開關/XD/XF)比xcopy做,你可以用它來完成你的任務:

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

所有與/N開始以及所述/FP開關控制所記錄的輸出的外觀,因此它是相當類似於xcopy命令的開關。


如果你堅持的xcopy/EXCLUDE選項:這並不支持野生卡樣*?但文字(不區分大小寫)唯一字符串。但是,您可以提前解決*Proxy.dll中的通配符。鑑於你有一個文件XcopyExclude.txt,內容如下...:

.config\ 
\Properties\ 
\Obj\ 

...(假設所有這些項目(部分)目錄名),你會這樣的內容複製到一個臨時文件和實際的複製活動之前追加解決*Proxy.dll部分:

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" 

假設有一個源代碼目錄樹叫AnyProxy.dll文件,文件XcopyExclude.tmp中的相關條目將是\AnyProxy.dll。請注意,一個名爲AnyProxy.dll.any的項目也會被意外排除。