使用命令行快速找出Class文件所在的Jar文件

开发 后端
由于jar命令去查找class文件速度比较慢,我个人尝试使用7z.exe,7z.dll,结合批处理,效果非常不错。

由于jar命令去查找class文件速度比较慢,我个人尝试使用7z.exe,7z.dll,结合批处理,效果非常不错。

请看示例:

for %i in (dir/b/s *.jar) do 7z l %i | findstr XDatabase.class

结果:

  1. D:\shared\xsql>for %i in (dir/b/s *.jar) do 7z l %i |findstr XDatabase.class    
  2.     
  3. D:\shared\xsql>7z l dir/b/s   | findstr XDatabase.class    
  4.     
  5. D:\shared\xsql>7z l db2jcc.jar   | findstr XDatabase.class    
  6.     
  7. D:\shared\xsql>7z l db2jcc_license_cu.jar   | findstr XDatabase.class    
  8.     
  9. D:\shared\xsql>7z l jconn3.jar   | findstr XDatabase.class    
  10.     
  11. D:\shared\xsql>7z l jodbc.jar   | findstr XDatabase.class    
  12.     
  13. D:\shared\xsql>7z l jTDS3.jar   | findstr XDatabase.class    
  14.     
  15. D:\shared\xsql>7z l mlscript.jar   | findstr XDatabase.class    
  16.     
  17. D:\shared\xsql>7z l msbase.jar   | findstr XDatabase.class    
  18.     
  19. D:\shared\xsql>7z l mssqlserver.jar   | findstr XDatabase.class    
  20.     
  21. D:\shared\xsql>7z l msutil.jar   | findstr XDatabase.class    
  22.     
  23. D:\shared\xsql>7z l mysql-connector-java-5.1.6-bin.jar   | findstr XDatabase.class    
  24.     
  25. D:\shared\xsql>7z l ojdbc14.jar   | findstr XDatabase.class    
  26.     
  27. D:\shared\xsql>7z l postgresql-8.4-701.jdbc4.jar   | findstr XDatabase.class    
  28.     
  29. D:\shared\xsql>7z l sqlite.jar   | findstr XDatabase.class    
  30.     
  31. D:\shared\xsql>7z l sqlitejdbc-v056-zentus.jar   | findstr XDatabase.class    
  32.     
  33. D:\shared\xsql>7z l sqljdbc.jar   | findstr XDatabase.class    
  34.     
  35. D:\shared\xsql>7z l ULjDatabaseTransfer.jar   | findstr XDatabase.class    
  36.     
  37. D:\shared\xsql>7z l UltraLiteJ.jar   | findstr XDatabase.class    
  38.     
  39. D:\shared\xsql>7z l UltraLiteJ12.jar   | findstr XDatabase.class    
  40.     
  41. [b]D:\shared\xsql>7z l xsql.jar   | findstr XDatabase.class    
  42. 2010-12-24 21:05:40 .....        30863        14443  [/b]com\sean\db\XDatabase.class 

最末一行展示的是最终结果。

将上述逻辑写成批处理:

  1. @echo off    
  2. SETLOCAL    
  3.     
  4. set WHICH_CLASS=%1    
  5. echo WHICH_CLASS=%WHICH_CLASS%    
  6.     
  7. for /F %%i in ('dir /A:-D /S /B *.jar'do 7z l %%i | findstr %WHICH_CLASS% && echo %WHICH_CLASS% found in: "%%i"    
  8. echo "Finished class finding..."    
  9. echo "======================================"    
  10. ENDLOCAL   

运行一下命令:

  1. findclass com\\sybase\\afx\\util\\StringUtil.class   
  2. WHICH_CLASS=com\\sybase\\afx\\util\\StringUtil.class   
  3. 2012-02-27 13:14:36 .....        15230         5915  com\sybase\afx\util\StringUtil.class   
  4. com\\sybase\\afx\\util\\StringUtil.class found in: "U:\target\lib\ext\sup-client.jar"   
  5. 2012-02-27 13:14:36 .....        15230         5915  com\sybase\afx\util\StringUtil.class   
  6. com\\sybase\\afx\\util\\StringUtil.class found in: "U:\target\lib\ext\sup-server-rt.jar"   
  7. "Finished class finding..."   
  8. "======================================" 

很容易得到最终结果。如果时间充分,我们甚至可以修改7z的源码,让它直接列出文件的全路径,那样,直接使用7z就可以找到最终文件了。

原文链接:http://blog.csdn.net/iihero/article/details/7331284

【编辑推荐】

  1.  
责任编辑:林师授 来源: iihero的博客
相关推荐

2014-12-05 10:10:48

Java

2022-08-14 19:19:14

Linux

2017-11-23 15:25:28

命令隐藏windows

2020-07-23 08:00:09

安全 恶意软件技术

2010-05-18 15:48:03

2010-05-18 15:06:46

Subversion命

2010-05-18 16:05:24

2013-12-03 09:23:06

命令行网速

2018-11-21 09:57:44

命令行Linux文件

2012-11-20 16:16:05

Windows

2019-06-17 09:30:50

命令行Windows 10管理密码

2024-11-18 15:05:34

MySQL数据库

2020-12-11 06:44:16

命令行工具开发

2020-12-10 16:16:08

工具代码开发

2019-07-23 13:45:38

LinuxFedora权限

2010-05-17 15:41:26

2009-07-07 11:28:36

2018-10-22 10:00:05

Linux命令ls

2019-08-05 12:20:30

命令行Linux权限进阶

2019-02-27 09:24:48

命令行文件Linux
点赞
收藏

51CTO技术栈公众号