Board logo

标题: [文件操作] 判断拖放到批处理文件上的两个文件哪个为压缩包 [打印本页]

作者: SmallK    时间: 2012-4-12 20:31     标题: 判断拖放到批处理文件上的两个文件哪个为压缩包

本帖最后由 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
复制代码

以上是我写的代码,可是不知道为什么点住压缩包文件到批处理上反而显示图片的名字……
脑子卡死了,麻烦大家帮忙看看哈~
作者: SmallK    时间: 2012-4-12 21:43

问题已解决。这要感谢 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
复制代码

作者: apang    时间: 2012-4-13 00:04

如果拖放的两个文件都是、或者都不是压缩包,结果就不对了吧
作者: apang    时间: 2012-4-13 00:06

  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
复制代码

作者: CrLf    时间: 2012-4-13 01:02

本帖最后由 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
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2