Board logo

标题: [文件操作] 批处理如何如何多个条件执行复制移动文件? [打印本页]

作者: 半角杯    时间: 2021-12-1 00:24     标题: 批处理如何如何多个条件执行复制移动文件?

文件夹 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:05

本帖最后由 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
复制代码
楼主应结合自身实际项目需求查询对应语法进行修改后使用。
作者: qixiaobin0715    时间: 2021-12-1 10:11

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

作者: Batcher    时间: 2021-12-1 10:28

回复 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. )
复制代码

作者: 半角杯    时间: 2021-12-1 10:48

回复 2# wudi61600963


谢谢解答, 谢谢
作者: 半角杯    时间: 2021-12-1 10:49

回复 3# qixiaobin0715


    非常感谢
作者: 半角杯    时间: 2021-12-1 10:49

回复 4# Batcher


    试过了,可行,十分感谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2