2016-12-02 35 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\" 
)