[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

在返修3中含有文件夹试验1,试验2;在返修2中含有文件夹试验1,试验2,试验3;在返修1中含有文件夹试验1,试验2,试验3,试验4(最终的子文件夹中包含具体的文件)
目的:将返修3中包含的所有文件夹剪切并替换到返修2中,然后将返修2中包含的所有文件夹剪切并替换到返修1中,最后将返修1中包含的所有文件夹剪切并替换到根文件夹B50001-T1-19A中
各位大神,这样批量的剪切替换该如何实现。

本帖最后由 星空独子 于 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可以通过自己赋值,感兴趣的可以讨论下

TOP

回复 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"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher

显示不可以,同时我在想能否将路径中相同的部分赋值给一个变量,这样会更简单些,bat小白,欢迎赐教(实际路径按照我图里的,这个不影响)

TOP

回复 4# 星空独子


请参考Q-04解决乱码问题
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

同时我在想能否将路径中相同的部分赋值给一个变量

试试这样:
  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

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# Batcher
对于现有的可实现的功能,能否做一下升级,n=子文件夹数量,以及cd /d 当前文件夹路径能否自动判断,而不是每次我自己重新填写

TOP

回复 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"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Batcher
在这个基础之上,假如我这里边存在如下文件夹,如何首先判断是否存在返修文件夹,如果存在的话,能否返修3替换返修2同名文件,返修2替换返修1同名文件,返修1替换返修同名文件,返修替换当前文件夹同名文件,
返修
返修1
返修2
返修3



返修N

TOP

回复 9# 星空独子


    可能是我没看懂你的需求,能否说下8楼代码和9楼需求之间的差异在什么地方?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 星空独子 于 2020-3-23 20:37 编辑

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

TOP

返回列表