【问题标题】:Using 'move' command instead of 'xcopy' in a loop在循环中使用“移动”命令而不是“xcopy”
【发布时间】: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


【解决方案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\"
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2021-12-17
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    相关资源
    最近更新 更多