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

[文件操作] 判断拖放到批处理文件上的两个文件哪个为压缩包

[复制链接]
发表于 2012-4-12 20:31:32 | 显示全部楼层 |阅读模式
本帖最后由 SmallK 于 2012-4-12 20:49 编辑

  1. ::设置压缩包文件后缀类型
  2. set @tx=rar zip 7z

  3. setlocal enabledelayedexpansion
  4. for %%a in (%@tx%) do (
  5. if /i "%~x1" equ ".%%a" (
  6. set @r=%1
  7. ) else (
  8. set @r=%2
  9. )
  10. )
  11. echo 您拖放的压缩包文件为!@r!
  12. pause >nul
复制代码

以上是我写的代码,可是不知道为什么点住压缩包文件到批处理上反而显示图片的名字……
脑子卡死了,麻烦大家帮忙看看哈~
 楼主| 发表于 2012-4-12 21:43:00 | 显示全部楼层
问题已解决。这要感谢 more !
以下为修正后的代码:

  1. ::设置压缩包文件后缀类型
  2. set @tx=rar zip 7z

  3. setlocal enabledelayedexpansion
  4. for %%a in (%@tx%) do (
  5. if /i "%~x1" equ ".%%a" set @r=%1
  6. if /i "%~x2" equ ".%%a" set @r=%2
  7. )
  8. echo 您拖放的压缩包文件为!@r!
  9. pause >nul
复制代码
发表于 2012-4-13 00:04:12 | 显示全部楼层
如果拖放的两个文件都是、或者都不是压缩包,结果就不对了吧
发表于 2012-4-13 00:06:36 | 显示全部楼层
  1. ::设置压缩包文件后缀类型
  2. set @tx=rar zip 7z
  3. setlocal enabledelayedexpansion
  4. for %%a in (%@tx%) do (
  5.   if /i "%~x1" equ ".%%a" set "@r1=%1"
  6.   if /i "%~x2" equ ".%%a" set "@r2=%2"
  7. )
  8. if defined @r1 (
  9.   if defined @r2 (
  10.     set "@r=!@r1! !@r2!"
  11.   ) else set "@r=!@r1!"
  12. ) else (
  13.   if defined @r2 (
  14.     set "@r=!@r2!"
  15.   ) else set "@r=无"
  16. )
  17. echo 您拖放的压缩包文件:!@r!
  18. pause
复制代码
发表于 2012-4-13 01:02:56 | 显示全部楼层
本帖最后由 CrLf 于 2012-4-13 01:04 编辑

另一种思路:
  1. @echo off

  2. for %%a in (%*) do set %%~xa=%%a
  3. ::将文件路径保存到以相应后缀名为名的变量中

  4. setlocal enabledelayedexpansion
  5. set j=!.jpg!!.jpeg!!.gif!!.bmp!!.png!!.tif!!.tiff!!.tga!
  6. set r=!.rar!!.zip!!.7z!
  7. ::区分图片与压缩包

  8. copy /b !j!+!r!
  9. ::合并

  10. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 02:12 , Processed in 0.011570 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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