【发布时间】:2016-12-02 19:59:35
【问题描述】:
这行代码对目录中具有某些共同文本的所有文件夹进行罚款,并将这些文件夹的所有内容复制到新的目的地。
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,但我不知道如何将此循环的结构转换为可与move 一起使用的结构。编写另一个删除文件的循环会更容易吗?我怀疑rm 而不是xcopy 会起作用,而且我总是有点害怕触摸rm。
我尝试将一个工作示例批处理脚本放在一起,但由于循环非常依赖于路径结构,我无法让它工作。所以基本上我的问题围绕着我在这个循环中对xcopy 的实现以及如何更改它以让move 代替它工作。
【问题讨论】:
-
move在目录方面的行为方式并不完全相同,因此保留xcopy并仅附加&& rm /S /Q "\\SERVER\Path\Directory\%%b\%%c"可能更可靠... -
@aschipfl 那么会直接在循环的其余部分之后添加吗?
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"?我问是因为我遇到了一些错误。 -
另外,
rm不是 windows 命令。它的del。 -
对不起,实际上我的意思是
rd=rmdir而不是rm...命令del=erase只删除文件但不删除目录... -
@aschipfl 但我只想删除目录中的文件而不是目录本身。
标签: batch-file xcopy rmdir