标题: [文件操作] 批处理如何将B路径下文件复制到A路径中? [打印本页]
作者: ednykissyou 时间: 2022-2-8 23:51 标题: 批处理如何将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 08:25
本帖最后由 qixiaobin0715 于 2022-2-9 13:44 编辑
- @echo off
- set "FD1=C:\Program Files (x86)\Rime\weasel-0.14.5\data\opencc"
- set "FD2=D:\Program Files (x86)\S-srf\Rime\liters"
- cd /d "%FD2%"
- for /f "delims=" %%i in ('dir /b /ad') do copy /y "%%i\*.*" "%FD1%"
- pause
复制代码
作者: Batcher 时间: 2022-2-9 09:14
回复 1# ednykissyou
复制之前,需要先比较一下,真实的意义是什么呢?
不管三七二十一,直接从B复制到A会有什么问题吗?
作者: Batcher 时间: 2022-2-9 09:54
回复 4# ednykissyou
如果单纯从语法的角度来说,可以在copy之前先用fc命令对比一下两个文件。
参考这个代码里面第17行:
https://mp.weixin.qq.com/s/DixV7t8KFySKNX974u2IBw
作者: ednykissyou 时间: 2022-2-9 14:15
回复 5# qixiaobin0715
2#qixiaobin0715正确 不用加引号
对不起~qixiaobin0715
你2楼的是对的,长路径上不加引号也是可以的。因为我的疏忽。
误将filter写成liter,结果让你浪费了很多时间。
为减少大家浪费时间看我的错误信息,我将已发的回复删了
作者: ednykissyou 时间: 2022-2-9 15:00
本帖最后由 ednykissyou 于 2022-2-9 15:16 编辑
回复 5# qixiaobin0715
我把另一贴中的自动FD2改为自动判断版本(BB)变化的路径。提示命令语法不正确了- @echo off
- for /d %%i in ("C:\Program Files (x86)\Rime\weasel*") do set "BB=%%~i"
- set FD1=C:\Program Files (x86)\Rime\%BB%\data\opencc\
- set FD2=D:\Program Files (x86)\S-srf\Rime\filters\
- cd /d "%FD2%"
- for /f "delims=" %%i in ('dir /b /ad') do copy /y "%%i\*.*" "%FD1%"
- pause
复制代码
----------------晕炸了--------------------我好像晓得了
这里应该是:- set FD1=%BB%\data\opencc\
复制代码
还有我想把批处理直接放在FD1的Rime下,直接用相对路径要咋整呢
下边这样就对了:- @REM 先复制滤镜到opencc下
-
- @echo off
- for /d %%i in ("C:\Program Files (x86)\Rime\weasel*") do set "BB=%%~i"
- set FD1=%BB%\data\opencc\
- @REM 相对路径 要求本批处理直接放在Rime下
- set FD2=%cd%\filters\
- @REM 绝地路径
- @REM set FD2=D:\Program Files (x86)\S-srf\Rime\filters\
- cd /d "%FD2%"
- for /f "delims=" %%i in ('dir /b /ad') do copy /y "%%i\*.*" "%FD1%"
- pause
-
- @rem 重新部署
- @echo off
- for /d %%i in ("C:\Program Files (x86)\Rime\weasel*") do set "FD=%%~i"
- start "" "%FD%\WeaselDeployer.exe"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |