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

[文件操作] 批处理如何如何多个条件执行复制移动文件?

文件夹 B 里面(包括所有子文件夹)文件复制到 A 文件夹里面

1.指定名称
2.指定后缀
3.指定大小以下

需要上述三个条件全部满足才执行复制
----------------------------
  1. @echo on
  2. @SET target=G:\a
  3. @SET raw=G:\b
  4. @for /r %raw% %%a in (*Report*) do (
  5. copy "%%a" %target%
  6. )
  7. choice /t 2 /d n > nul
复制代码
--------------------------------------------------

目前写到指定名称或者指定后缀,但是三个条件同时满足的话还不是很会...
希望能得到一些帮助
谢谢各位..

本帖最后由 wudi61600963 于 2021-12-1 10:36 编辑

可以考虑使用 for 语句、dir 语句 和 robocopy 来实现,robocopy 不支持XP等上古系统。

for 实现范例:
  1. for /R "源目录" %%# in (文件名.后缀名) do if %%~z# lss 最大文件大小 copy "%%#" "目标路径" >nul
复制代码
robocopy 实现范例:
  1. robocopy "源目录 " "目标目录 " 文件名.扩展名 /MAX:最大文件大小 /COPY:DAT /NJH /NJS /NS /NC /NFL /NDL >nul
复制代码
楼主应结合自身实际项目需求查询对应语法进行修改后使用。

TOP

  1. for /f "delims=" %%a in ('dir /s /b /a-d *Report*.txt *Report*.jpg *Report*.doc') do if %%~za lss 1000000 copy...
复制代码

TOP

回复 1# 半角杯
  1. @echo off
  2. set "FolderTo=G:\a"
  3. set "FolderFrom=G:\b"
  4. if not exist "%FolderTo%" (
  5.     goto :eof
  6. )
  7. if not exist "%FolderFrom%" (
  8.     goto :eof
  9. )
  10. pushd "%FolderFrom%"
  11. for /f "delims=" %%i in ('dir /b /s /a-d *Report*.txt') do (
  12.     if %%~zi lss 1000000 (
  13.         copy /y "%%i" "%FolderTo%\"
  14.     )
  15. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# wudi61600963


谢谢解答, 谢谢

TOP

回复 3# qixiaobin0715


    非常感谢

TOP

回复 4# Batcher


    试过了,可行,十分感谢

TOP

返回列表