2017-10-17 77 views
0

展望的所有文件複製與擴展名爲*的.cpp在「發展」的子文件夾到新目錄中。批處理文件從某些子目錄複製特定類型的文件一個文件夾

例如,C:\源10頁已命名的文件夾A1至A10。每個A文件夾都有子文件夾,如開發,待處理,已發佈。我想從所有開發子文件夾中提取所有* .cpp,並放置在C:\目標中。

例如C:\源\ A1 \研發\文件夾中包含文件one.cpp C:\發佈的源代碼\ A1 \ \文件夾中包含two.cpp

我只想* .cpp的文件是在路徑包含開發名稱。 因此在這個例子中只有one.cpp應該被複制到新文件夾中

我可以從cmd提示符命名這些文件: dir/s/b * .cpp | FINDSTR/I/M「開發」> outfile.txt

(注意dir命令上面只搜索文件名,而不是文件的內容!)

想我可以拿outfile.txt並運行另一個批處理文件

Batch script to copy files listed in text file from a folder and its subfolders to a new location

但是,必須有更簡單的方法。

BTW:

DOS Batch file to copy certain file types from subdirectories to one folder with rename

不允許限制子文件夾。

回答

1

here

但是否需要從一個批處理文件運行。

for /f "delims=" %%A in ('findstr /i /M "glossary" *.txt') do copy "%%A" C:\destination 

編輯:

無需FINDSTR只是文件名,所以我用你的初始目錄搜索,並與for語句結合它。爲我工作:)

for /f "delims=" %%A in ('dir /s /b *development*.cpp') do copy "%%A" C:\destination

EDIT2:

對,所以這應該是它,現在for語句與DIR作爲一個變量裏面的文件夾中運行。注意:它不產生誤報,你可以與如果存在語句過濾掉,但我敢肯定,你可以用自己的實驗:

for /f "tokens=*" %%D in ('dir /b /s /a:d "C:\source\*"') do copy %%D\development\*.cpp C:\destination 

EDIT3:

如果你想找到幾個.cpp的神祕目錄:)

for /f "tokens=*" %%D in ('dir /b /s /a:d "C:\source\*"') do (for /f "delims=" %%A in ('dir /s /b "%%D\development\*.cpp"') do copy "%%A" C:\destination) 
+0

我試圖找到文件名與開發中的名稱不在內容中。 「findstr/i/M」詞彙表「* .txt」在該行中搜索文件的內容,但是當在dir中用作參數時,它只搜索文件名。 – equalizer

+0

您可以隨時清除詞彙表部分,並使用'* development * .txt'? – itChi

+0

你能輸入確切的新命令嗎?findstr/i/m * development * .txt不起作用,它需要一個文件名參數。 – equalizer

相關問題