2013-05-15 38 views
2

因此,如果我有C:\drivers\*帶*表示許多子文件夾,我想找出我的inf文件,然後複製位於我的inf文件所在的同一目錄中的所有文件以及所有子目錄。批處理腳本找到一個文件所在的目錄,將位於該目錄和子目錄中的所有文件複製到另一個目錄

人們很容易創建一個腳本,將複製發現我的目錄中的所有.inf文件:

FOR /R C:\drivers\ %%a in (*.inf *.cat *.sys) do xcopy /c /h /y %%a C:\test 

但複製是位於同一目錄中的其他文件和所有子目錄一直難。例如,如果inf文件位於C:\ drivers \ sbdrv \ hseries \ usb30 \ amdhub \ w7下,並且sys文件位於x86的子文件夾中,則需要保留sys文件在相同的子文件夾中,但在C:\ test \ x86的目標下。

任何想法?

編輯:也許這會讓它更容易。只要在文件夾中找到一個.inf文件,它應該將整個文件夾複製到測試以及所有子文件夾中,然後轉到下一個文件夾。因此,如果它看到位於C:\ drivers \ sb3045 \ sb407.inf中的第一個.inf文件,它應該複製sb3045下的所有文件和文件夾,而不復制文件夾sb3045本身,然後移至文件夾C:\ drivers \ sb4055 \ drivers \ oem \ intel \ id6077.inf並複製intel文件夾下的所有文件和文件夾,而不復制intel文件夾本身。

EDIT2: 它看起來像這樣的工作,但它是緩慢的,因爲它發現每一個.inf和被複制過任何舊文件,如果有每個文件夾

@ECHO不止一個.inf文件ON

SETLOCAL ENABLEDELAYEDEXPANSION

CD \

CD驅動器

FOR/F「令牌= * delims = 「%% B IN('DIR/b/s/o:gen .inf')DO( XCOPY」%%〜dpB。*「」C:\ test \「/ e/c/h/y

如果有人有更清潔或更快的想法,請讓我知道。在那之前,我將不得不使用這個。

+0

你有與同名文件的問題? – npocmaka

+0

@npocmaka不,我的問題是,從HP或戴爾提取驅動程序後,我需要一個快速的方式來更新我的驅動程序存儲庫從Windows 7專業版或指向它的一個我的服務器。問題是,只有在找到.inf文件所在的位置才能完成此操作後,我才需要保持文件結構不變。我知道上面的腳本不起作用,我相信它需要另一個for循環(如果不是2)來做我正在尋找的東西,並希望從社區獲得關於想法的幫助。 – user2386455

回答

0

試試這個:

FOR /R C:\drivers\ %%a in (*.inf *.cat *.sys) do xcopy /c /h /y "%%~dpa*" C:\test 
+0

這確實如我所說的那樣工作,但我想我還不夠清楚,無法確定我需要什麼。我仍然需要的是,如果文件位於子文件夾中,那麼我需要的路徑與inf文件相比是相同的。 – user2386455

+0

它在單個文件夾中陷入無限循環。 – user2386455

+0

嗯,我現在測試了無限循環,發現沒有,所以請從文件夾結構中顯示更多。 – Endoro

0
for /R C:\WINDOWS\inf %%a in (*.inf*) do (
xcopy /qv /T %%a .\test\ 
xcopy /qv %%a .\test\ 
) 
pause 

此代碼爲我工作。

+1

通常避免代碼唯一的答案。考慮添加一個'description'來幫助解釋你的代碼。謝謝 – MickyD

相關問題