Board logo

标题: [文本处理] [已解决]批处理取每个文件夹第N张图片 N=我可以自己打上数字 例如2 [打印本页]

作者: swanseabrian    时间: 2021-11-24 09:11     标题: [已解决]批处理取每个文件夹第N张图片 N=我可以自己打上数字 例如2

本帖最后由 swanseabrian 于 2021-11-24 13:57 编辑

取每个文件夹第N张图片   N=我可以自己打上数字 例如2

在大量文件夹里遍历提取指定第几张, 并复制到指定文件夹,
这个可以做到吗?
作者: qixiaobin0715    时间: 2021-11-24 10:55

用于当前文件夹下第一层子文件夹,未经测试:
  1. @echo off
  2. set N=2
  3. set DstFolder=D:\abc
  4. for /d %%i in (*) do (
  5.     pushd "%%i"
  6.     for /f "tokens=2 delims=:" %%a in ('dir /b /a-d *.txt^|findstr /n .*^|findstr ^%N%:') do copy "%%a" "%DstFolder%"
  7.     popd
  8. )
  9. pause
复制代码

作者: swanseabrian    时间: 2021-11-24 11:05

回复 2# qixiaobin0715


    是图片,不是txt ,这个倒是好改,

图片名命是中文 ,不是编号 呀,你这样找%N%,不行的吧
作者: qixiaobin0715    时间: 2021-11-24 11:40

本帖最后由 qixiaobin0715 于 2021-11-24 14:24 编辑

没说是编号,N表示查找到的文件夹中的第2个文件。
你可以把copy改为:echo,%%a查看一下。
作者: swanseabrian    时间: 2021-11-24 11:52

  1. @echo off&setlocal enabledelayedexpansion
  2. set N=2
  3. set x=0
  4. set DstFolder=D:\abc
  5. for /d %%i in (*) do (
  6.     pushd "%%i"
  7.     for /f "delims=:" %%a in ('dir /b /a-d *.jpg') do (
  8. set /a x=x+1
  9. if !x! equ !N! (
  10. echo "%%a"
  11. copy "%%a" "%DstFolder%")
  12.     popd
  13. ))
  14. pause
复制代码
回复 4# qixiaobin0715

上面是我的代码,我echo 没问题,
可是复制的时候说,
系统找不到指定文件,这是啥情况
作者: qixiaobin0715    时间: 2021-11-24 12:05

set x=0 应当放在for /d 循环内
作者: swanseabrian    时间: 2021-11-24 12:16

回复 6# qixiaobin0715


   放了
复制的时候还 是系统找不到指定文件
作者: qixiaobin0715    时间: 2021-11-24 12:53

这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. set N=2
  3. set DstFolder=D:\abc
  4. for /d %%i in (*) do (
  5. set x=0
  6.     pushd "%%i"
  7.     for /f "delims=:" %%a in ('dir /b /a-d *.jpg') do (
  8. set /a x=x+1
  9. if !x! equ !N! (
  10. echo "%%a"
  11. copy "%%a" "%DstFolder%")
  12. )
  13.     popd
  14. )
  15. pause
复制代码
回复 7# swanseabrian
作者: qixiaobin0715    时间: 2021-11-24 12:55

popd位置有问题
作者: swanseabrian    时间: 2021-11-24 13:11

回复 9# qixiaobin0715


    还真是




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