2016-12-02 38 views
1

這行代碼罰分目錄中的所有文件夾,這些文件夾有一定的文本共同點,並將這些文件夾的所有內容複製到新的目的地。在循環中使用'移動'命令而不是'xcopy'

dir /b /s /a:d "\\SERVER\Path\Directory\*FolderTag" | for /f "delims=\; tokens=3,4,5*" %%a in ('findstr FolderTag') do @xcopy /i /s /y "\\SERVER\Path\Directory\%%b\%%c" "E:\%%b\" 

它的功能就像一個魅力。但我希望能夠移動這些文件,而不是僅僅複製它們,以便將它們從原始位置刪除。我不能簡單地將xcopy替換爲move,但我無法弄清楚如何將此循環的結構轉換爲可與移動一起使用的結構。編寫另一個刪除文件的循環會更容易嗎?我懷疑rm,而不是xcopy會工作,我總是有點害怕觸摸rm

我試着放在一起工作的例子批處理腳本,但因爲循環是如此依賴於路徑結構,我無法得到它的工作。所以基本上我的問題圍繞着我在這個循環中執行xcopy以及如何改變它以讓move工作。

+0

'move'並不完全行爲相同的方式,當涉及到目錄,所以它可能是更可靠的,以保持'xcopy',只是追加'&& RM/S/Q「\\ SERVER \ Path \ Directory \ %% b \ %% c「'... – aschipfl

+0

@aschipfl所以會被直接添加到af在循環的其餘部分? 'dir/b/s/a:d「\\ SERVER \ Path \ Directory \ * FolderTag」| for/f「delims = \; tokens = 3,4,5 *」 %% a in('findstr FolderTag')do @xcopy/i/s/y「\\ SERVER \ Path \ Directory \ %% b \ %% c「」E:\ %% b \「&& rm/S/Q」\\ SERVER \ Path \ Directory \ %% b \ %% c \ %% d「'? 我問,因爲我得到了一些錯誤。 – Neal

+0

另外'rm'不是一個windows命令。它的'del'。 – Neal

回答

1

移動應該工作,但是你需要創建你移動到第一

另外的文件夾,您可以用括號

所以對for循環每次迭代執行多個命令如下應該工作

dir /b /s /a:d "\\SERVER\Path\Directory\*FolderTag" | for /f "delims=\; tokens=3,4,5*" 
%%a in ('findstr FolderTag') do (
mkdir "E:\%%b" 
@move /Y "\\SERVER\Path\Directory\%%b\%%c" "E:\%%b\" 
)