[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 pcl_test 于 2016-9-9 11:50 编辑

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

怎么改动下,让我可以把需要处理的文件夹拖动到这个批处理图标上就能处理。(打个比方:就是批处理在桌面,我要提取JPG文件名的文件是F盘下的“照片”,我只需要把“照片”文件夹拖动到桌面的批处理图标上,就自动在F盘“照片”文件夹下生成“当前JPG文件清单”文本文档)
  1. @echo off
  2. dir *.jpg/a-d /b >./当前JPG文件清单.txt
复制代码

本帖最后由 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 /?里面有参数解释

TOP

其实你如果仔细看上次给你解决的传参数,方法就会了
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
复制代码

TOP

本帖最后由 6232333 于 2016-2-13 17:59 编辑

回复 2# ivor


    您好,用不了呢。
经过测试,把文件夹拖到BAT图标上,没有反应,还是要和以前一样,把批处理复制到当前文件夹上双击才可以使用!

TOP

本帖最后由 6232333 于 2016-2-13 18:04 编辑

回复 3# 再世情緣


    您好,您这个也用不了呢?也是必须复制到当前文件夹中双击才能用,能再帮帮我吗?谢谢各位大神!

TOP

回复 5# 6232333


    那两个txt“当前JPG文件清单.txt”,“当前文件夹清单.txt”文件在,你要拖入BAT的文件夹所在位置,不是在本BAT所在的位置。我测试正常

TOP

回复 6# ivor


    我的意思是:如果想把那个文件夹的JPG文件提取出来,直接把这个文件拖动到BAT批处理的图标上就能执行。谁能帮我再弄弄啊!

TOP

回复 7# 6232333


    可是你没有提供目标文件夹路径,JPG往哪COPY。http://www.bathome.net/thread-39350-1-1.html这个不就是你想要的吗

TOP

本帖最后由 6232333 于 2016-2-13 21:38 编辑

回复 8# ivor

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

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


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

最好是做出来的批处理支持一次拖动多个文件夹!

TOP

本帖最后由 再世情緣 于 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
复制代码

TOP

回复 10# 再世情緣


    您好,第一个提取文件夹的有点问题,提取出来的是当前文件夹里所有文件的名称,我只想提取当前文件夹下包含的文件夹名称。
第二个完全不能用。
我的是xp系统,和这个有关系吗?

TOP

回复 10# 再世情緣


第二个我自己参照您的第一个修改了下,可以用了。把“@echo off”改成“@echo off & setlocal enabledelayedexpansion”就可以用了!
第一个谁我也改了下,但是还是不行,大家帮帮忙!

TOP

回复 12# 6232333


    已经在原楼层修改。。。。

TOP

批处理拖拽==蛋蛋疼

TOP

回复 14# WHY


    为何这样说,菜鸟一枚,求解释!我感觉总比复制在当前文件夹操作要方便快捷很多啊!

TOP

返回列表