Board logo

标题: [文件操作] 求助批处理移动文件到指定文件夹。逻辑比较复杂。 [打印本页]

作者: fouliny1    时间: 2022-7-17 18:01     标题: 求助批处理移动文件到指定文件夹。逻辑比较复杂。

文件夹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 里面的指定前十二位吻合的文件夹。
作者: flashercs    时间: 2022-7-17 19:47

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

作者: fouliny1    时间: 2022-7-18 12:59

回复 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里面的错位。
作者: flashercs    时间: 2022-7-18 13:15

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

作者: fouliny1    时间: 2022-7-19 15:57

回复 4# flashercs


    今天试了试。上面显示着。请按任意建继续。然后回车后。有一个list.txt是空白的。什么错误都没有。不行呢。咋回事。
作者: fouliny1    时间: 2022-7-24 11:41

大佬求救啊。
作者: LJY4.0    时间: 2022-7-24 18:35

这样呢:
  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
复制代码

作者: flashercs    时间: 2022-7-24 19:00

批处理保存为ANSI编码 试试
作者: fouliny1    时间: 2022-8-2 17:17

本帖最后由 fouliny1 于 2022-8-2 17:19 编辑

回复 8# flashercs [code]@echo off
可以拉。谢谢大佬
作者: fouliny1    时间: 2022-8-6 09:58

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

作者: flashercs    时间: 2022-8-6 11:28

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

作者: gemeiq    时间: 2022-8-12 18:51

果然是大神
作者: fouliny1    时间: 2022-8-28 22:12

回复 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  其他文件不拷贝。
作者: flashercs    时间: 2022-8-28 23:39

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





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