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

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

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

以上是我写的代码,可是不知道为什么点住压缩包文件到批处理上反而显示图片的名字……
脑子卡死了,麻烦大家帮忙看看哈~
虚心使人进步 细节成就完美

问题已解决。这要感谢 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
复制代码
虚心使人进步 细节成就完美

TOP

如果拖放的两个文件都是、或者都不是压缩包,结果就不对了吧

TOP

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

TOP

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

TOP

返回列表