标题: [文件操作] 【已解决】批处理Move命令 移动文件和文件夹的问题 [打印本页]
作者: ashnoer 时间: 2023-5-14 03:05 标题: 【已解决】批处理Move命令 移动文件和文件夹的问题
本帖最后由 ashnoer 于 2023-5-14 18:02 编辑
解决方案:- @echo off
- cd /d "%~dp0"
- 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
作者: jyswjjgdwtdtj 时间: 2023-5-14 08:50
你的意思是比如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里本来的?
作者: ashnoer 时间: 2023-5-14 08:58
本帖最后由 ashnoer 于 2023-5-14 09:01 编辑
回复 2# jyswjjgdwtdtj
对的
就是把 Old 里的所有文件移动到 New 里面 、跳过同名文件
移动而非复制
作者: hlzj88 时间: 2023-5-14 09:44
接上面的举例,如果old的2.txt内容比new里的2.txt内容更新,保留谁?
作者: hfxiang 时间: 2023-5-14 09:59
回复 1# ashnoer - @echo off & cd /d "%~dp0"
- for /f "tokens=*delims=" %%a in ('dir .\old /b') do @if not exist ".\new\%%a" @move /y ".\old\%%a" ".\new\%%a"
复制代码
作者: czjt1234 时间: 2023-5-14 10:07
- @echo off
- for /f "delims=" %%i in ('dir /a/b new\*.*') do (
- if not exist "old\%%~nxi" move "new\%%~nxi" "old\%%~nxi"
- )
- pause
- exit
复制代码
作者: ashnoer 时间: 2023-5-14 10:17
回复 6# hfxiang
无法移动子目录的文件
作者: ashnoer 时间: 2023-5-14 10:17
回复 7# czjt1234
无法移动子目录的文件
作者: qixiaobin0715 时间: 2023-5-14 10:21
感觉是楼主未说清楚,可以举个栗子比较明白。
作者: ashnoer 时间: 2023-5-14 10:40
回复 9# qixiaobin0715
已更新示例 请查看
作者: Batcher 时间: 2023-5-14 11:08
回复 1# ashnoer - @echo off
- cd /d "%~dp0"
- robocopy "Old" "New" /e /xn /xo
复制代码
这是复制的
作者: Batcher 时间: 2023-5-14 11:13
回复 1# ashnoer - @echo off
- cd /d "%~dp0"
- robocopy "Old" "New" /e /xn /xo /move
复制代码
这是移动的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |