Board logo

标题: [ 新手习题 7 ] 批处理显示文件扩展名 [打印本页]

作者: wxcute    时间: 2008-12-4 20:50     标题: [ 新手习题 7 ] 批处理显示文件扩展名

把一个文件拖放到批处理图标上,显示出文件的扩展名(不含点)
1、不考虑无扩展名的情况
2、增加点难度:还是只拖放一个,但可能是目录,还要考虑无扩展名的情况

如:文件名为 “美女.jpg”,显示:jpg
  目录名为 “AUTORUN.INF”,显示:INF
  文件名为 “DateBase”,显示:无扩展名

目的:了解何为参数,掌握带参数批处理文件写法。

要求:显示去掉点的扩展名,会做第一题也可以亮出代码。
   方法不限。

评分:代码可读性 1 分;
   首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。
作者: tireless    时间: 2008-12-4 22:17

  1. @echo off
  2. (for /f "delims=." %%a in ("%~x1") do echo %%a) || echo 无扩展名
  3. pause
复制代码

作者: nomyself    时间: 2008-12-5 16:13

试下手
  1. @echo off
  2. set a=%~x1
  3. set b=%a:~1%
  4. if not %~nx1==%~n1 (echo %b%) else  echo 无扩展名
  5. pause
复制代码

作者: sylovanas    时间: 2008-12-5 16:46

  1. @IF NOT DEFINED DEBUG @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. IF "%~X1"=="" ( ECHO 无扩展名 ) ELSE (
  4. SET "VAR=%~X1"
  5. ECHO !VAR:~1!
  6. )
复制代码

作者: pusofalse    时间: 2008-12-5 20:00     标题: 过来凑热闹~

  1. @echo off
  2. set "var=%~x1%%无扩展名"
  3. call echo %var:~1,4%
  4. pause
复制代码

[ 本帖最后由 pusofalse 于 2008-12-5 22:21 编辑 ]
作者: keen    时间: 2009-3-31 10:06

  1. @echo off
  2. set /p a=请将文件拖放到这里:
  3. call :1 %a%
  4. pause &exit
  5. :1
  6. set b=%~x1
  7. set c=%b:~1%
  8. if not "%b%"=="" (echo %c%) else (echo 无扩展名!)
复制代码

[ 本帖最后由 keen 于 2009-3-31 10:15 编辑 ]
作者: keen    时间: 2009-3-31 10:20

简洁一下:
  1. @echo off
  2. set b=%~x1
  3. set c=%b:~1%
  4. if not "%b%"=="" (echo %c% &pause) else (echo 无扩展名!&pause)
复制代码

作者: tyc    时间: 2009-4-5 11:20     标题: try

  1. @echo off
  2. set a=%~x1
  3. if  defined a (echo %a:.=%) else echo 没有扩展名
  4. pause>nul
复制代码

作者: zhouyongjun    时间: 2009-4-11 13:41

  1. @echo off
  2. cd %1 2>nul||(call :file %1&pause&exit)
  3. for /r "%~1" %%a in (*.*) do call :file "%%~a"
  4. pause&exit
  5. :file
  6. (for /f "delims=." %%i in ("%~x1") do echo %%i)||echo 无扩展名
  7. goto :eof
复制代码

作者: tireless    时间: 2009-4-11 14:56

  1. @echo off
  2. set var=无扩展名%~x1
  3. echo %var:*.=%
  4. pause
复制代码

作者: 唯尘    时间: 2024-2-1 15:20

@echo off
for /f "tokens=2 delims=." %%a in ("%~nx1") do if not "%~nx1"=="%~x1" echo %%a
pause>nul
作者: 唯尘    时间: 4 天前 08:37

@echo off
set var=%~x1
echo %var:~1%
pause>nul




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