Board logo

标题: [问题求助] (已解决)求助VBS关于特定条件复制的小程序 [打印本页]

作者: arjunayuki    时间: 2021-6-3 11:05     标题: (已解决)求助VBS关于特定条件复制的小程序

本帖最后由 arjunayuki 于 2021-6-8 11:01 编辑

想要求助一个复制小程序,我这个程序有点点复杂,不知道VBS能够做到吗,希望各位大佬指教 。我有一个文件夹A,位置是C:\NEW\DATA\A,里面有无数个文件夹1,2,3等,文件夹1,2,3这些里面又有很多文件夹,这些文件夹名字全是18位数字和英文字母组成, 我想设置一个复制要求,就是把那18位英文数字的文件夹做一个筛选,筛选条件有两个,第一个字母必须是B开头的,然后第16个数字选最大的(第16个数字可能有4,3,2,0等,这时候选数字最大那个文件夹),然后把筛选好的18位英文数字文件夹包含文件夹里面的文件,一起复制到C:\NEW\TEST这个路径里面。不知道这个筛选要求能否实现,是要求连18位数字的文件夹一起复制到新的路径里面去,求各位大佬指教,多谢多谢,如果可以,能否提供代码,小妹跪谢!!!!!
作者: newswan    时间: 2021-6-3 13:47

本帖最后由 newswan 于 2021-6-7 16:56 编辑
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. set sour=C:\NEW\DATA\A
  4. set dest=C:\NEW\TEST
  5. pushd %sour%
  6. for /f "usebackq delims=" %%a in (` dir /b /ad `) do (
  7.     call :f %%a
  8. )
  9. popd
  10. goto :END
  11. :f
  12. pushd %1
  13. for /l %%a in (9,-1,0) do (
  14.     for /f "usebackq delims=" %%a in (` dir /b /ad B??????????????%%a*  2^>nul`) do (
  15.         echo "%%~fa"
  16.         goto :break
  17.     )
  18. )
  19. :break
  20. popd
  21. goto :eof
  22. :END
复制代码
屏幕输出,文件正确的话,第18行修改为
  1. move "%%~fa" %dest%
复制代码

作者: arjunayuki    时间: 2021-6-3 14:42

回复 2# newswan
大神你好,多谢你能够写出这个代码,但是我怎么运行都说找不到资料,想问下怎么处理呢,多谢多谢
作者: arjunayuki    时间: 2021-6-3 14:59

本帖最后由 arjunayuki 于 2021-6-3 15:05 编辑

回复 2# newswan
大神,我给你看下我的文件路径:
C:\NEW\DATA\A\11NW19C\B357821959101062D0,然后B357821959101062D0文件夹里面有几个文件B357821959101062D0.jpg和B357821959101062D0.txt。 当然A这个路径下面有很多个文件,11NW19C,11NW19D,11NW19E,就不列举了。11NW19C这些文件里面有很多个文件夹,文件名字是18位数字的B357821959101062D0这些,多谢大神。
作者: newswan    时间: 2021-6-3 16:35

B357821959101062D0
17行改成 B???%%a*
多少个?你自己算
作者: arjunayuki    时间: 2021-6-3 17:38

回复 5# newswan


大神,你好,我试着运行了下,是能COPY文件的,但是结果运行不太对,因为只把子文件里面的文件.JPG那些给复制出来了,没有把文件夹给复制出来,我希望是能把文件夹BXXX连同里面的文件一起复制出来,还有就是可能我上面写得不是太清楚,我里面有些文件是重复的,区别在前15位是一样的,只有第16位不同,我是想通过16位的变化,让程序能够帮我筛选出想要的结果,比如存在3个文件夹,B27238424490106011, B27238424490106211,B27238424490106411,这3个前面全部一样,第16位开始有变化,希望通过小程序能够让B27238424490106411这个被复制出来,而其余的2个不需要复制,如果其他只有一个文件的,比如B37238424490106011这个只有一个文件时候,那么也要复制到最后结果的文件夹里面,谢谢
作者: newswan    时间: 2021-6-3 19:55

回复 6# arjunayuki


    应该没问题的,小改了一下,如果有问题,把输出看看。
作者: arjunayuki    时间: 2021-6-4 09:15

回复 7# newswan

大神,需要小改哪里呢?能否告诉我,谢谢
作者: newswan    时间: 2021-6-4 22:52

回复 8# arjunayuki


    上面已经改了,你测试
作者: arjunayuki    时间: 2021-6-7 09:54

回复 9# newswan


    已经测试过了,很快,显示的是找不到资料,然后我试试之前大神说的是MOVE改成XCOPY都不行,输出的文件夹里面什么都没有
作者: newswan    时间: 2021-6-7 15:36

本帖最后由 newswan 于 2021-6-7 16:56 编辑

回复 10# arjunayuki


    每个文件夹里找一个 文件夹 ? 第1个字符是B 第16个字符是数字,最大的数字
    上面改了。看看屏幕输出

已测试,目录树
  1. ├───data
  2. │   └───a
  3. │       ├───a
  4. │       │   ├───a1
  5. │       │   ├───a2
  6. │       │   └───a3
  7. │       ├───b
  8. │       │   ├───b1
  9. │       │   ├───B123412341234xx9abc
  10. │       │   ├───b2
  11. │       │   └───b3
  12. │       └───c
  13. │           ├───c1
  14. │           ├───c2
  15. │           └───c3
  16. └───test
复制代码

作者: arjunayuki    时间: 2021-6-8 10:47

回复 11# newswan
已经解决,多谢大神




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