找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21123|回复: 13

[文件操作] 求助批处理移动文件到指定文件夹。逻辑比较复杂。

[复制链接]
发表于 2022-7-17 18:01:39 | 显示全部楼层 |阅读模式
文件夹1 下面有很多文件夹。

20220101-001xxx
20220709-851xxx
20221111-025xxx
20220121-101xxx

已知前12位有规律。xxx不确定
截取前12位

然后在局域网共享文件夹

\\192.168.1.1\目录\文件夹2 内拿前十二位来搜索

文件夹2内容如下

[完毕]20220101-001xxx
[完毕]20220101-001xxx
[完毕]20220709-851xxx
[完毕]20221111-025xxx
[完毕]20220121-101xxx
......

如果搜到了就进入搜到的文件夹。把这个文件夹内的名字为*.bbb后缀名的文件。
复制到本地文件夹1 里面的指定前十二位吻合的文件夹。
发表于 2022-7-17 19:47:11 | 显示全部楼层
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. for /d %%A in ("文件夹1\*") do (
  5.   set fd1=%%~nxA
  6.   for /d %%B in ("\\192.168.1.1\目录\文件夹2\[完毕]!fd1:~0,12!*") do (
  7.     copy /y "%%B\*.bbb" "%%A"
  8.   )
  9. )
  10. pause
复制代码
 楼主| 发表于 2022-7-18 12:59:04 | 显示全部楼层
回复 2# flashercs

大佬还有个疑问。我复制完了那个.bbb之后。我想把这个路径打印出来。输出到一个list.txt的文本。
格式如下。方便其他软件调用。

\\192.168.1.1\目录\文件夹2\[完毕]20220101-005xxx\xxx.bbb
\\192.168.1.1\目录\文件夹2\[完毕]20220509-805xxx\xxx.bbb
\\192.168.1.1\目录\文件夹2\[完毕]20220911-905xxx\xxx.bbb
\\192.168.1.1\目录\文件夹2\[完毕]20220121-105xxx\xxx.bbb

这个文本的顺序就是bat代码搜索的顺序。现在有一个问题。他搜索顺序是按照当前文件夹,我自己设置的按日期排序还是按名称排序呢。还是bat有自己的判断方式。
这个不重要。我就是想了解一下。输出来的格式。能不能和文件夹对应上。避免其他软件按顺序调用的时候和txt里面的错位。
发表于 2022-7-18 13:15:16 | 显示全部楼层
回复 3# fouliny1
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. (
  5. for /d %%A in ("文件夹1\*") do (
  6.   set fd1=%%~nxA
  7.   for /d %%B in ("\\192.168.1.1\目录\文件夹2\[完毕]!fd1:~0,12!*") do (
  8.     for %%C in ("%%B\*.bbb") do (
  9.       echo %%C
  10.       copy /y "%%C" "%%A" >nul
  11.     )
  12.   )
  13. )
  14. )>list.txt
  15. endlocal
  16. pause
复制代码
 楼主| 发表于 2022-7-19 15:57:28 | 显示全部楼层
回复 4# flashercs


    今天试了试。上面显示着。请按任意建继续。然后回车后。有一个list.txt是空白的。什么错误都没有。不行呢。咋回事。
 楼主| 发表于 2022-7-24 11:41:09 | 显示全部楼层
大佬求救啊。
发表于 2022-7-24 18:35:58 | 显示全部楼层
这样呢:
  1.    @echo off
  2.     setlocal EnableDelayedExpansion
  3.     cd /d "%~dp0"
  4.     for /d %%A in ("文件夹1\*") do (
  5.       set fd1=%%~nxA
  6.       for /d %%B in ("\\192.168.1.1\目录\文件夹2\[完毕]!fd1:~0,12!*") do (
  7.         for %%C in ("%%B\*.bbb") do (
  8.           echo %%C>>list.txt
  9.           copy /y "%%C" "%%A" >nul
  10.         )
  11.       )
  12.     )
  13.     endlocal
  14.     pause
复制代码
发表于 2022-7-24 19:00:44 | 显示全部楼层
批处理保存为ANSI编码 试试
 楼主| 发表于 2022-8-2 17:17:04 | 显示全部楼层
本帖最后由 fouliny1 于 2022-8-2 17:19 编辑

回复 8# flashercs [code]@echo off
可以拉。谢谢大佬
 楼主| 发表于 2022-8-6 09:58:17 | 显示全部楼层
回复 8# flashercs


    还有一个问题大佬。。

list
是这样的。

\\192.168.18.222\n8选版目录\选版服务器\[已选]20220616-001\工程\20220616-001宁溢宸原片_10X10环保双面印.n8cprj

我只想打印到这里

\\192.168.18.222\n8选版目录\选版服务器\[已选]20220616-001\工程\
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. (
  5. for /d %%A in ("设计\*") do (
  6.   set fd1=%%~nxA
  7.   for /d %%B in ("\\192.168.18.222\n8选版目录\选版服务器\[已选]!fd1:~0,12!*") do (
  8.     for %%C in ("%%B\工程\*.n8cprj") do (
  9.       echo %%C
  10.       copy /y "%%C" "%%A" >nul
  11.     )
  12.   )
  13. ) >list.txt
  14. )
  15. endlocal
  16. pause
复制代码
发表于 2022-8-6 11:28:22 | 显示全部楼层
回复 10# fouliny1
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. (
  5. for /d %%A in ("设计\*") do (
  6.   set fd1=%%~nxA
  7.   for /d %%B in ("\\192.168.18.222\n8选版目录\选版服务器\[已选]!fd1:~0,12!*") do (
  8.     for %%C in ("%%B\工程\*.n8cprj") do (
  9.       echo %%~dpC
  10.       copy /y "%%C" "%%A" >nul
  11.     )
  12.   )
  13. )
  14. ) >list.txt
  15. endlocal
  16. pause
复制代码
发表于 2022-8-12 18:51:04 | 显示全部楼层
果然是大神
 楼主| 发表于 2022-8-28 22:12:07 | 显示全部楼层
回复 11# flashercs


大佬,想求一个校验拷贝的代码,需求是这样的。不知道能不能加到上面这个代码里。如果不能加。就想另起一个bat

A网络上的 文件夹还是[已选]20200808-123xxxxxxx
这个目录下面有一个叫 已选照片 的文件夹,下面有很多*.jpg
如1.jpg 2.jpg 5.jpg 99.jpg

然后B网络上的文件夹是 20200808-123
他们这几个数字肯定是一摸一样的。这是唯一id
这个目录下面有一个叫 照片 的文件夹,

下面也有很多*.jpg
如1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg .... 100.jpg
  

如果找到一样的文件名就拷贝到本地20200808-123xxxx

如示例的话拷贝到本地20200808-123xxxx 里的应该是只有B网络的   1.jpg 2.jpg 5.jpg 99.jpg  其他文件不拷贝。
发表于 2022-8-28 23:39:01 | 显示全部楼层
回复 13# fouliny1
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. (
  5. for /d %%A in ("设计\*") do (
  6.   set fd1=%%~nxA
  7.   for /d %%B in ("\\192.168.18.222\n8选版目录\选版服务器\[已选]!fd1:~0,12!*") do (
  8.     for %%C in ("%%B\工程\*.n8cprj") do (
  9.       echo %%~dpC
  10.       copy /y "%%C" "%%A" >nul
  11.     )
  12.   )
  13. )
  14. ) >list.txt

  15. @REM 拷贝图片
  16. for /d %%A in ("设计\*") do (
  17.   set fd1=%%~nxA
  18.   for /d %%B in ("\\A网络\[已选]!fd1:~0,12!*") do (
  19.     for %%C in ("\\B网络\!fd1:~0,12!\照片\*.jpg") do (
  20.       if exist "%%~B\已选照片\%%~nxC" (
  21.         copy /y "%%~C" "%%~A"
  22.       )
  23.     )
  24.   )
  25. )
  26. endlocal
  27. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 19:41 , Processed in 0.021940 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表