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

[文件操作] 批处理如何将B路径下文件复制到A路径中?

要将B路径下文件复制到A路径中,如果A中无直接复制,如果A中有,比较,有改动才复制

我需要完成一项操作。
有两个文件夹:
A路径为:
C:\Program Files (x86)\Rime\weasel-0.14.5\data\opencc\

B路径为:
D:\Program Files (x86)\S-srf\Rime\liters\
这里边有B1、B2子文件夹(比如...\liters\B1\001.txt    ...\liters\B2\abc.json )

我现在想把B1、B2下的文件,复制到A的\opencc\内。(比如变成这样:...\opencc\001.txt   ...\opencc\abc.json)
复制之前,需要先比较一下:
  如果A内没有001.txt,abc.json,那直复制。
  如果A内已经存在相同的文件,那比较一下是否不一样(不用管谁更新),不一样则复制,一样则跳过不操作。

上边运行完。
即下来才执行某个程序(这里是C:\Program Files (x86)\Rime\weasel-0.14.5\WeaselDeployer.exe)
基实我的目的就是:不想将小狼毫输入法的滤镜放在opencc下,想放在Rime路径下好备份。

请大神们帮我写个批或vbs.
万分呢感谢~

本帖最后由 qixiaobin0715 于 2022-2-9 13:44 编辑
  1. @echo off
  2. set "FD1=C:\Program Files (x86)\Rime\weasel-0.14.5\data\opencc"
  3. set "FD2=D:\Program Files (x86)\S-srf\Rime\liters"
  4. cd /d "%FD2%"
  5. for /f "delims=" %%i in ('dir /b /ad') do copy /y "%%i\*.*" "%FD1%"
  6. pause
复制代码

TOP

回复 1# ednykissyou


复制之前,需要先比较一下,真实的意义是什么呢?
不管三七二十一,直接从B复制到A会有什么问题吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# ednykissyou


如果单纯从语法的角度来说,可以在copy之前先用fc命令对比一下两个文件。
参考这个代码里面第17行:
https://mp.weixin.qq.com/s/DixV7t8KFySKNX974u2IBw
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# qixiaobin0715
2#qixiaobin0715正确 不用加引号
对不起~qixiaobin0715
你2楼的是对的,长路径上不加引号也是可以的。因为我的疏忽。
误将filter写成liter,结果让你浪费了很多时间。
为减少大家浪费时间看我的错误信息,我将已发的回复删了

TOP

本帖最后由 ednykissyou 于 2022-2-9 15:16 编辑

回复 5# qixiaobin0715

我把另一贴中的自动FD2改为自动判断版本(BB)变化的路径。提示命令语法不正确了
  1. @echo off
  2. for /d %%i in ("C:\Program Files (x86)\Rime\weasel*") do set "BB=%%~i"
  3. set FD1=C:\Program Files (x86)\Rime\%BB%\data\opencc\
  4. set FD2=D:\Program Files (x86)\S-srf\Rime\filters\
  5. cd /d "%FD2%"
  6. for /f "delims=" %%i in ('dir /b /ad') do copy /y "%%i\*.*" "%FD1%"
  7. pause
复制代码
----------------晕炸了--------------------我好像晓得了
这里应该是:
  1. set FD1=%BB%\data\opencc\
复制代码
还有我想把批处理直接放在FD1的Rime下,直接用相对路径要咋整呢
下边这样就对了:
  1. @REM 先复制滤镜到opencc下
  2. @echo off
  3. for /d %%i in ("C:\Program Files (x86)\Rime\weasel*") do set "BB=%%~i"
  4. set FD1=%BB%\data\opencc\
  5. @REM 相对路径 要求本批处理直接放在Rime下
  6. set FD2=%cd%\filters\
  7. @REM 绝地路径
  8. @REM set FD2=D:\Program Files (x86)\S-srf\Rime\filters\
  9. cd /d "%FD2%"
  10. for /f "delims=" %%i in ('dir /b /ad') do copy /y "%%i\*.*" "%FD1%"
  11. pause
  12. @rem 重新部署
  13. @echo off
  14. for /d %%i in ("C:\Program Files (x86)\Rime\weasel*") do set "FD=%%~i"
  15. start "" "%FD%\WeaselDeployer.exe"
复制代码

TOP

返回列表