Board logo

标题: [文件操作] [已解决]批处理提取每个文件夹下的第一个文件 [打印本页]

作者: F090706    时间: 2021-12-6 20:39     标题: [已解决]批处理提取每个文件夹下的第一个文件

有2000多个文件夹,如何提取每个文件夹的第一个文件,每个文件夹下的文件名称是不一样的,提取出来不用担心文件名称相同的问题.
作者: 小小菜鸟    时间: 2021-12-6 20:44

第一个文件有点模糊explorer显示的和命令获取的顺序不一样
作者: F090706    时间: 2021-12-6 20:46

回复 2# 小小菜鸟


    就是文件按照文件名称默认的排序
作者: 小小菜鸟    时间: 2021-12-6 21:13

  1. @powershell -c "(Get-ChildItem -Path '目录' -Recurse -File | Select-Object -First 1).Name"
复制代码
试试 没有验证过
作者: F090706    时间: 2021-12-6 21:31

回复 4# 小小菜鸟


    这个不太会,我只会操作bat,是个程序小白,工作中遇到的问题,还是谢谢大神了
作者: qixiaobin0715    时间: 2021-12-6 21:53

本帖最后由 qixiaobin0715 于 2021-12-6 21:56 编辑

有时文件的顺序不是你通常想的那样。你可以列举其中一个文件夹中的文件做一个说明。
最好是真实的文件名,不要随便举例。
作者: 小小菜鸟    时间: 2021-12-6 22:01

回复 5# F090706


    放bat里也可以跑
作者: F090706    时间: 2021-12-6 22:03

回复 6# qixiaobin0715


    比如001-0001-0001、001-0001-0001-0012、001-0001-0001-0023,这种类似的文件,我想复制出第一个文件001-0001-0001,这种三位编码的,其他的全部是四位编码
作者: qixiaobin0715    时间: 2021-12-6 22:20

本帖最后由 qixiaobin0715 于 2021-12-6 23:06 编辑

文件复制到"D:\NewFolder"中,未测试:
  1. @echo off
  2. md "D:\NewFolder"
  3. for /f "delims=" %%a in ('dir /b /ad') do (
  4.     pushd "%%a"
  5.     for /f "delims=" %%i in ('dir /b /a-d^|findstr /r /b "[0-9]*-[0-9]*-[0-9]*\."') do (
  6.         copy "%%i" "D:\NewFolder">nul
  7.     )
  8.     popd
  9. )
  10. pause
复制代码

作者: F090706    时间: 2021-12-6 22:48

回复 9# qixiaobin0715


    我测试了一下,是把每个文件夹里的文件都复制出去了
作者: qixiaobin0715    时间: 2021-12-6 23:03

回复 10# F090706
已修改
作者: F090706    时间: 2021-12-6 23:10

回复 11# qixiaobin0715


    成功了,多谢大神
作者: qixiaobin0715    时间: 2021-12-7 10:29

如果文件名像你列举的那样规律,可以将代码第5行括号内的修改为下面形式可能效率上更好些:
  1. ('dir /b /a-d ???-????-????.*')
复制代码





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