Board logo

标题: [安全相关] 批处理判断输入类型 [打印本页]

作者: cjiabing    时间: 2010-10-9 20:45     标题: 批处理判断输入类型

分享一个判断输入类型的工具,可能在某些自由输入类型的程序中用到!~
  1. @echo off
  2. :start
  3. cls
  4. echo.
  5. echo    可以粗略判断输入的是文件、文件夹、txt文件、http网址、字符串、选项等.
  6. echo    可以进一步修改判断输入的是否某种类型文件。
  7. echo    不支持特殊符号。
  8. echo    可直接用到其它代码中。
  9. echo    可以拖入文件夹和文件。
  10. echo    可使用Url地址。
  11. echo    可直接输入字符。
  12. echo    退出 Q
  13. echo.
  14. echo.
  15. set /p "inf=输入:"
  16. echo.
  17. echo.
  18. if not defined inf echo 假设没有输入
  19. ::判断没有输入,同if "%inf%"==""
  20. if exist %inf% if /I "!inf:~-4,4!"==".txt" (echo 输入的是 TXT 文件)
  21. ::判断txt文件
  22. if /i "!inf:~0,4!"=="http" goto b
  23. ::判断http网址
  24. if /i %inf%==Q goto :eof
  25. ::判断选项
  26. if exist %inf% (if exist %inf%\nul (echo 【%inf%】是文件夹!) else (echo 【%inf%】 是文件!)) else (echo 【%inf%】 为字符串)
  27. ::if exist %inf% (if exist %inf% dir /a:d %inf%>nul 2>nul&&echo 【%inf%】是文件夹!||echo 【%inf%】 是文件!) else (echo 【%inf%】 为字符串)
  28. ::判断是否文件与字符串
  29. echo.
  30. echo.
  31. pause
  32. goto start
复制代码

[ 本帖最后由 cjiabing 于 2010-10-10 00:08 编辑 ]
作者: Batcher    时间: 2010-10-9 22:46

  1. if exist %inf%\
复制代码
这样就可以判断文件夹了吧?
作者: cjiabing    时间: 2010-10-10 00:03     标题: 回复 2楼 的帖子

我见过一个:
  1. if exist %inf%\nul echo 文件夹||echo 是文件
复制代码
可在我应用中没成功,不懂是执行环境问题还是其它问题,所以我只好用DIR
作者: powerbat    时间: 2010-10-10 00:59

你见过的那个有那么明显的错误都没看出来啊,不应该是||而是else
作者: cjiabing    时间: 2010-10-10 12:27     标题: 回复 4楼 的帖子

见了啊,呵呵,疏忽,但在使用中我用的是“if exist %inf%\nul”,后面的没用到
作者: caruko    时间: 2010-10-21 23:08

这个其实用findstr来做更好一点..
实际就是正则表达式..这是它的强项..
作者: cjiabing    时间: 2010-10-21 23:30

怎么做呢?
不懂正则。
findstr是个费时间的东东,而且不够精确。
作者: Batcher    时间: 2010-10-22 00:03     标题: 回复 7楼 的帖子

正则表达式简介
http://bbs.bathome.net/thread-4485-1-1.html

批处理findstr命令正则表达式的基本用法
http://bbs.bathome.net/thread-24-1-1.html




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