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

[ 新手习题 7 ] 批处理显示文件扩展名

[复制链接]
发表于 2008-12-4 20:50:32 | 显示全部楼层 |阅读模式
把一个文件拖放到批处理图标上,显示出文件的扩展名(不含点)
1、不考虑无扩展名的情况
2、增加点难度:还是只拖放一个,但可能是目录,还要考虑无扩展名的情况

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

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

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

评分:代码可读性 1 分;
   首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。
发表于 2008-12-4 22:17:37 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=." %%a in ("%~x1") do echo %%a) || echo 无扩展名
  3. pause
复制代码

评分

参与人数 1PB +6 收起 理由
wxcute + 6 多谢捧场

查看全部评分

发表于 2008-12-5 16:13:24 | 显示全部楼层
试下手
  1. @echo off
  2. set a=%~x1
  3. set b=%a:~1%
  4. if not %~nx1==%~n1 (echo %b%) else  echo 无扩展名
  5. pause
复制代码

评分

参与人数 1PB +5 收起 理由
wxcute + 5 不错,就是没防住空格

查看全部评分

发表于 2008-12-5 16:46:44 | 显示全部楼层
  1. @IF NOT DEFINED DEBUG @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. IF "%~X1"=="" ( ECHO 无扩展名 ) ELSE (
  4.         SET "VAR=%~X1"
  5.         ECHO !VAR:~1!
  6.         )
复制代码

评分

参与人数 1PB +4 收起 理由
wxcute + 4 拖放到批处理上最好 pause 暂停下,要在黑框 ...

查看全部评分

发表于 2008-12-5 20:00:03 | 显示全部楼层

过来凑热闹~

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

[ 本帖最后由 pusofalse 于 2008-12-5 22:21 编辑 ]

评分

参与人数 2PB +8 收起 理由
wxcute + 2 有点取巧,不过遇到扩展名除点外有四个字符 ...
youxi01 + 6 不错

查看全部评分

发表于 2009-3-31 10:06:33 | 显示全部楼层

  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 编辑 ]

评分

参与人数 1PB +2 收起 理由
wxcute + 2 不错哦。

查看全部评分

发表于 2009-3-31 10:20:40 | 显示全部楼层
简洁一下:
  1. @echo off
  2. set b=%~x1
  3. set c=%b:~1%
  4. if not "%b%"=="" (echo %c% &pause) else (echo 无扩展名!&pause)
复制代码

评分

参与人数 1PB +1 收起 理由
wxcute + 1 追加一分。

查看全部评分

发表于 2009-4-5 11:20:00 | 显示全部楼层

try

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

评分

参与人数 1PB +6 收起 理由
wxcute + 6 用的是替换法,很好。

查看全部评分

发表于 2009-4-11 13:41:25 | 显示全部楼层
  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
复制代码

评分

参与人数 1PB +2 收起 理由
wxcute + 2 加分有点晚了,不过还是补上。 与题意有 ...

查看全部评分

发表于 2009-4-11 14:56:13 | 显示全部楼层
  1. @echo off
  2. set var=无扩展名%~x1
  3. echo %var:*.=%
  4. pause
复制代码

评分

参与人数 1PB +5 收起 理由
wxcute + 5 也是替换法,很巧妙。补上加分。

查看全部评分

发表于 2024-2-1 15:20:29 | 显示全部楼层
@echo off
for /f "tokens=2 delims=." %%a in ("%~nx1") do if not "%~nx1"=="%~x1" echo %%a
pause>nul
发表于 2024-4-24 08:37:40 | 显示全部楼层
@echo off
set var=%~x1
echo %var:~1%
pause>nul
发表于 2024-5-6 14:45:41 | 显示全部楼层
@echo off
set var=%1
if exist %~1\ (echo 您选择的是一个文件夹) else (echo 文件扩展名是 %~x1)
pause>nul
发表于 2024-12-19 18:47:40 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 22:04 , Processed in 0.025097 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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