[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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
复制代码

回复 18# 6232333


    保存那个代码为bat即可,把文件拖上去就能够获取路径

TOP

vbs
  1. On Error Resume Next
  2. Dim n, fso, i, s, strFolder, objFile
  3. n = WSH.Arguments.Length
  4. if n = 0 Then MsgBox "请拖拽文件夹" : WSH.Quit()
  5. Set fso = CreateObject("Scripting.FileSystemObject")
  6. For i = 0 To n - 1
  7.     strFolder = WSH.Arguments(i)
  8.     If fso.FolderExists(strFolder) Then
  9.         s = ""
  10.         For Each objFile In fso.GetFolder(strFolder).Files
  11.             If LCase(Right(objFile.Name, 4)) = ".jpg" Then
  12.                 s = s & objFile.Name & vbCrLf
  13.             End If
  14.         Next
  15.         fso.CreateTextFile(strFolder & "\当前JPG文件清单.txt", True, -1).Write(s)
  16.     End If
  17. Next
复制代码
  1. On Error Resume Next
  2. Dim n, fso, i, s, strFolder, objFolder
  3. n = WSH.Arguments.Length
  4. if n = 0 Then MsgBox "请拖拽文件夹" : WSH.Quit()
  5. Set fso = CreateObject("Scripting.FileSystemObject")
  6. For i = 0 To n - 1
  7.     strFolder = WSH.Arguments(i)
  8.     If fso.FolderExists(strFolder) Then
  9.         s = ""
  10.         For Each objFolder In fso.GetFolder(strFolder).SubFolders
  11.             s = s & objFolder.Name & vbCrLf
  12.         Next
  13.         fso.CreateTextFile(strFolder & "\当前文件夹清单.txt", True, -1).Write(s)
  14.     End If
  15. Next
复制代码

TOP

回复 17# wskwfkbdn


    本人小白一个,看不懂,能帮我亲自改下吗?

TOP

如果文件名或路径没有什么特殊字符的话 基本都是可以处理的

http://www.bathome.net/viewthread.php?tid=39243&highlight=

TOP

回复 10# 再世情緣

   感谢感谢!
   发现提取JPG文件名称的还有点小问题,就是当文件夹上含有空格的时候,拖动在批处理图标上处理不了!有时间在帮我改下吗?

TOP

回复 14# WHY


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

TOP

批处理拖拽==蛋蛋疼

TOP

回复 12# 6232333


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

TOP

回复 10# 再世情緣


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

TOP

回复 10# 再世情緣


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

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

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

回复 8# ivor

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

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


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

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

TOP

回复 7# 6232333


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

TOP

回复 6# ivor


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

TOP

返回列表