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

[文件操作] 【已解决】获取多个文件夹里的jpg文件名的批处理如何以拖放的方式执行?

[复制链接]
发表于 2016-2-13 14:40:47 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-9-9 11:50 编辑

下面这个批处理,是提取当前文件夹中的JPG文件名到“当前JPG文件清单”文本文档中,是需要把批处理文件复制到当前文件夹中操作进行,最好是一次可以拖动多个文件夹也能执行!

怎么改动下,让我可以把需要处理的文件夹拖动到这个批处理图标上就能处理。(打个比方:就是批处理在桌面,我要提取JPG文件名的文件是F盘下的“照片”,我只需要把“照片”文件夹拖动到桌面的批处理图标上,就自动在F盘“照片”文件夹下生成“当前JPG文件清单”文本文档)

  1. @echo off
  2. dir *.jpg/a-d /b >./当前JPG文件清单.txt
复制代码
发表于 2016-2-13 15:51:13 | 显示全部楼层
本帖最后由 ivor 于 2016-2-13 15:53 编辑
  1. @echo off
  2. dir %~f1\*.jpg /a-d /b >当前JPG文件清单.txt
  3. dir %~f1 /b/ad >当前文件夹清单.txt
  4. pause
复制代码
其实你如果仔细看上次给你解决的传参数,方法就会了
call /?里面有参数解释
发表于 2016-2-13 17:50:43 | 显示全部楼层
其实你如果仔细看上次给你解决的传参数,方法就会了
call /?里面有参数解释
ivor 发表于 2016-2-13 15:51



一点小细节,如果文件及路径中右空格,会出现问题的,所以,应该是
  1. @echo off
  2. dir "%~f1\*.jpg" /a-d /b >当前JPG文件清单.txt
  3. dir "%~f1" /b/ad >当前文件夹清单.txt
  4. pause
复制代码
 楼主| 发表于 2016-2-13 17:56:13 | 显示全部楼层
本帖最后由 6232333 于 2016-2-13 17:59 编辑

回复 2# ivor


    您好,用不了呢。
经过测试,把文件夹拖到BAT图标上,没有反应,还是要和以前一样,把批处理复制到当前文件夹上双击才可以使用!
 楼主| 发表于 2016-2-13 18:01:27 | 显示全部楼层
本帖最后由 6232333 于 2016-2-13 18:04 编辑

回复 3# 再世情緣


    您好,您这个也用不了呢?也是必须复制到当前文件夹中双击才能用,能再帮帮我吗?谢谢各位大神!
发表于 2016-2-13 19:20:11 | 显示全部楼层
回复 5# 6232333


    那两个txt“当前JPG文件清单.txt”,“当前文件夹清单.txt”文件在,你要拖入BAT的文件夹所在位置,不是在本BAT所在的位置。我测试正常
 楼主| 发表于 2016-2-13 19:41:12 | 显示全部楼层
回复 6# ivor


    我的意思是:如果想把那个文件夹的JPG文件提取出来,直接把这个文件拖动到BAT批处理的图标上就能执行。谁能帮我再弄弄啊!
发表于 2016-2-13 19:47:12 | 显示全部楼层
回复 7# 6232333


    可是你没有提供目标文件夹路径,JPG往哪COPY。http://www.bathome.net/thread-39350-1-1.html这个不就是你想要的吗
 楼主| 发表于 2016-2-13 21:09:24 | 显示全部楼层
本帖最后由 6232333 于 2016-2-13 21:38 编辑

回复 8# ivor

这个帖子是另外求助的,和本帖没有关联性!

    可能你们误会我的意思了。我不是要把这2个批处理合并成一个批处理。


我的意思是:比如说我要提取的文件名是F盘下的“照片”文件夹,这个批处理文件在桌面,我只要把F盘的“照片”文件夹拖入到桌面的批处理图标上,就自动在F盘“照片”文件夹中新建个文本文档,把文件名依次输入进去。

最好是做出来的批处理支持一次拖动多个文件夹!
发表于 2016-2-13 23:55:00 | 显示全部楼层
本帖最后由 再世情緣 于 2016-2-14 19:36 编辑

回复 9# 6232333


    在别人的基础上修改的,测试可用
  1. @echo off & setlocal enabledelayedexpansion
  2. set /a "count=0"
  3. call :fuc %1
  4. call :fuc %2
  5. call :fuc %3
  6. call :fuc %4
  7. call :fuc %5
  8. call :fuc %6
  9. call :fuc %7
  10. call :fuc %8
  11. call :fuc %9
  12. echo 处理了 !count! 个文件夹......&pause
  13. goto :eof
  14. :fuc folder
  15. if "#%1#" EQU "##" goto :eof
  16. set "att=%~a1" &&set "att=!att:~,1!"
  17. set "var=%~f1"
  18. if /i "#!att!#" EQU "#d#" (
  19.         cd /d "!var!" >"!var!\当前文件夹清单.txt"
  20.         for /f "delims=" %%A in ('dir /b /a +d "*" 2^>nul') do (
  21.                 set "att1=%%~aA" &&set "att1=!att1:~,1!"
  22.                 if /i "#!att1!#" EQU "#d#" (echo.%%~nA)>>"!var!\当前文件夹清单.txt"
  23.         )
  24.         set /a "count+=1"
  25. )
  26. goto :eof
复制代码
  1. @echo off & setlocal enabledelayedexpansion
  2. set /a "count=0"
  3. call :fuc %1
  4. call :fuc %2
  5. call :fuc %3
  6. call :fuc %4
  7. call :fuc %5
  8. call :fuc %6
  9. call :fuc %7
  10. call :fuc %8
  11. call :fuc %9
  12. echo 处理了 !count! 个文件夹......&pause
  13. goto :eof
  14. :fuc folder
  15. if "#%1#" EQU "##" goto :eof
  16. set "att=%~a1" &&set "att=!att:~,1!"
  17. if /i "#!att!#" EQU "#d#" (
  18.         dir /b /a -d "%~f1\*.jpg" 2>nul >"%~f1\当前JPG文件清单.txt"
  19.         set /a "count+=1"
  20. )
  21. goto :eof
复制代码
 楼主| 发表于 2016-2-14 10:27:05 | 显示全部楼层
回复 10# 再世情緣


    您好,第一个提取文件夹的有点问题,提取出来的是当前文件夹里所有文件的名称,我只想提取当前文件夹下包含的文件夹名称。
第二个完全不能用。
我的是xp系统,和这个有关系吗?
 楼主| 发表于 2016-2-14 10:47:54 | 显示全部楼层
回复 10# 再世情緣


第二个我自己参照您的第一个修改了下,可以用了。把“@echo off”改成“@echo off & setlocal enabledelayedexpansion”就可以用了!
第一个谁我也改了下,但是还是不行,大家帮帮忙!
发表于 2016-2-14 19:38:11 | 显示全部楼层
回复 12# 6232333


    已经在原楼层修改。。。。
发表于 2016-2-14 23:34:47 | 显示全部楼层
批处理拖拽==蛋蛋疼
 楼主| 发表于 2016-2-15 09:25:14 | 显示全部楼层
回复 14# WHY


    为何这样说,菜鸟一枚,求解释!我感觉总比复制在当前文件夹操作要方便快捷很多啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 03:27 , Processed in 0.033943 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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