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

[文件操作] 批处理怎样实现文件夹剪切替换?

[复制链接]
发表于 2019-11-22 15:01:53 | 显示全部楼层 |阅读模式
在返修3中含有文件夹试验1,试验2;在返修2中含有文件夹试验1,试验2,试验3;在返修1中含有文件夹试验1,试验2,试验3,试验4(最终的子文件夹中包含具体的文件)
目的:将返修3中包含的所有文件夹剪切并替换到返修2中,然后将返修2中包含的所有文件夹剪切并替换到返修1中,最后将返修1中包含的所有文件夹剪切并替换到根文件夹B50001-T1-19A中
各位大神,这样批量的剪切替换该如何实现。
 楼主| 发表于 2019-11-22 20:31:39 | 显示全部楼层
本帖最后由 星空独子 于 2019-11-22 20:37 编辑

回复 1# 星空独子
  1. @echo off
  2. Xcopy "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修3" "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修2" /s /e /y
  3. Xcopy "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修2" "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修1" /s /e /y
  4. Xcopy "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修1" "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A" /s /e /y
  5. rd "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修3" /s /q
  6. rd "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修2" /s /q
  7. rd "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修1" /s /q
  8. pause
复制代码
我编出来了,但是还有一个小小的疑惑,就是如何简化,假如我这边出现了返修4,返修5,返修6等,如何从返修6替换返修5,再返修5替换返修4中子文件夹及文件。。。。。,意思就是返修N我不确定的情况下,如何编写更简单下,N可以通过自己赋值,感兴趣的可以讨论下
发表于 2019-11-22 20:56:33 | 显示全部楼层
回复 2# 星空独子
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=6
  4. for /l %%i in (%n%,-1,2) do (
  5.     set /a m=%%i-1
  6.     xcopy /s /e /y "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修%%i" "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修!m!"
  7.     rd /s /q "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修%%i"
  8. )
  9. xcopy /s /e /y "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修1" "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A"
  10. rd /s /q "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A\返修1"
复制代码
 楼主| 发表于 2019-11-22 21:16:17 | 显示全部楼层
回复 3# Batcher

显示不可以,同时我在想能否将路径中相同的部分赋值给一个变量,这样会更简单些,bat小白,欢迎赐教(实际路径按照我图里的,这个不影响)
发表于 2019-11-22 21:41:09 | 显示全部楼层
回复 4# 星空独子


请参考Q-04解决乱码问题
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
发表于 2019-11-22 21:44:26 | 显示全部楼层
同时我在想能否将路径中相同的部分赋值给一个变量

试试这样:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=6
  4. cd /d "C:\Users\yuyu\Desktop\模拟试验\B50001-T1-19A"
  5. for /l %%i in (%n%,-1,2) do (
  6.     set /a m=%%i-1
  7.     xcopy /s /e /y "返修%%i" "返修!m!"
  8.     rd /s /q "返修%%i"
  9. )
  10. xcopy /s /e /y "返修1" .
  11. rd /s /q "返修1"
复制代码

评分

参与人数 1技术 +1 收起 理由
星空独子 + 1 解决了问题

查看全部评分

 楼主| 发表于 2019-12-2 15:34:24 | 显示全部楼层
回复 6# Batcher
对于现有的可实现的功能,能否做一下升级,n=子文件夹数量,以及cd /d 当前文件夹路径能否自动判断,而不是每次我自己重新填写
发表于 2019-12-2 16:21:58 | 显示全部楼层
回复 7# 星空独子
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set n=0
  5. for /f %%i in ('dir /b /ad 返修*') do (
  6.     set /a n+=1
  7. )
  8. for /l %%i in (!n!,-1,2) do (
  9.     set /a m=%%i-1
  10.     xcopy /s /e /y "返修%%i" "返修!m!"
  11.     rd /s /q "返修%%i"
  12. )
  13. xcopy /s /e /y "返修1" .
  14. rd /s /q "返修1"
复制代码
 楼主| 发表于 2019-12-3 11:54:56 | 显示全部楼层
回复 8# Batcher
在这个基础之上,假如我这里边存在如下文件夹,如何首先判断是否存在返修文件夹,如果存在的话,能否返修3替换返修2同名文件,返修2替换返修1同名文件,返修1替换返修同名文件,返修替换当前文件夹同名文件,
返修
返修1
返修2
返修3



返修N
发表于 2019-12-3 12:52:35 | 显示全部楼层
回复 9# 星空独子


    可能是我没看懂你的需求,能否说下8楼代码和9楼需求之间的差异在什么地方?
 楼主| 发表于 2019-12-3 15:11:28 | 显示全部楼层
本帖最后由 星空独子 于 2020-3-23 20:37 编辑

回复 10# Batcher
除了规律的文件夹返修1,返修2...返修N,还有一个返修文件夹,这个文件夹内的版本要比返修1还要早(你就可以把它假象成返修0),但是有时候因为操作的问题,可能没有这个文件夹,就是这个文件夹因为人员关系可能随机存在。
这个新增的问题还是没解决,不知道哪里出了问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 20:29 , Processed in 0.035663 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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