找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23108|回复: 11

[文件操作] 【已解决】批处理Move命令 移动文件和文件夹的问题

[复制链接]
发表于 2023-5-14 03:05:47 | 显示全部楼层 |阅读模式
本帖最后由 ashnoer 于 2023-5-14 18:02 编辑

解决方案:
  1. @echo off
  2. cd /d "%~dp0"
  3. robocopy "Old" "New" /e /xn /xo /move
复制代码
感谢 Batcher 大佬 !

=======================原文

现有两个文件文件夹 New Old

其中 New 文件夹的文件是在 Old 文件夹的基础上进行更新

现在需要把 Old 内的所有文件以及文件夹移动【并非复制】到 New 文件夹内

并且跳过名称相同的文件

move貌似只能移动指定的文件夹 或 移动指定文件夹内的文件而不能移动子文件夹内的文件?

在移动文件时又如何在不触发提示的情况下默认不覆盖?


    需求如下:
    在不改变目录结构的情况下
    将 Old 下所有的 目录、子目录、文件 全部移动到 New ,跳过同名文件


    例如                                                 合并为
    New                        Old                        New
       aaa                        aaa                        aaa
          1.txt                      2.txt                         1.txt
          2.txt                      3.txt                         2.txt
       bbb                        bbb                             3.txt
          3.txt                       4.txt                   bbb
          4.txt                       5.txt                       3.txt
                                                                      4.txt
                                                                      5.txt

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-5-14 08:50:51 | 显示全部楼层
你的意思是比如new和old里都有子文件夹f1,然后f1里都有子文件夹f2,然后new里的f2有子文件1.txt,2.txt,old里有2.txt,3.txt
经过你想要的操作
new里的f1里的f2就有1.txt 2.txt 3.txt
且这个2.txt是new里本来的?
 楼主| 发表于 2023-5-14 08:58:38 | 显示全部楼层
本帖最后由 ashnoer 于 2023-5-14 09:01 编辑

回复 2# jyswjjgdwtdtj


     对的

     就是把 Old 里的所有文件移动到 New 里面 、跳过同名文件  

     移动而非复制
发表于 2023-5-14 09:44:25 | 显示全部楼层
接上面的举例,如果old的2.txt内容比new里的2.txt内容更新,保留谁?
发表于 2023-5-14 09:59:24 | 显示全部楼层
回复 1# ashnoer

  1. @echo off & cd /d "%~dp0"
  2. for /f "tokens=*delims=" %%a in ('dir .\old /b') do @if not exist ".\new\%%a" @move /y ".\old\%%a" ".\new\%%a"
复制代码
发表于 2023-5-14 10:07:49 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('dir /a/b new\*.*') do (
  3.    if not exist "old\%%~nxi" move "new\%%~nxi" "old\%%~nxi"
  4. )
  5. pause
  6. exit
复制代码
 楼主| 发表于 2023-5-14 10:17:50 | 显示全部楼层
回复 6# hfxiang


    无法移动子目录的文件
 楼主| 发表于 2023-5-14 10:17:55 | 显示全部楼层
回复 7# czjt1234


    无法移动子目录的文件
发表于 2023-5-14 10:21:58 | 显示全部楼层
感觉是楼主未说清楚,可以举个栗子比较明白。
 楼主| 发表于 2023-5-14 10:40:13 | 显示全部楼层
回复 9# qixiaobin0715


    已更新示例 请查看
发表于 2023-5-14 11:08:25 | 显示全部楼层
回复 1# ashnoer
  1. @echo off
  2. cd /d "%~dp0"
  3. robocopy "Old" "New" /e /xn /xo
复制代码
这是复制的

评分

参与人数 1技术 +1 收起 理由
ashnoer + 1 技艺精湛

查看全部评分

发表于 2023-5-14 11:13:31 | 显示全部楼层
回复 1# ashnoer
  1. @echo off
  2. cd /d "%~dp0"
  3. robocopy "Old" "New" /e /xn /xo /move
复制代码
这是移动的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 01:03 , Processed in 0.021496 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表