中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-09 05:34
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 通配符“?”问题 查看 784 回复 6
楼 主 通配符“?”问题 发表于 2008-07-17 12:07 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线


  1. @echo off
  2. for /d %%i in ("%cd%"\?????) do echo %%i
  3. pause
Radem 发表于: 2008-07-17 11:57


Q1:
运行上面代码,则列出当前目录下1-5个字符之目录
但为什么超过5字符的也列出来:

...\批处理\批处理诗
...\批处理\批处理隐藏运行的11种思路
...\批处理\BAT加密
...\批处理\奇特加密解密
...\批处理\test
...\批处理\经典代码
...\批处理\批处理资料
请按任意键继续. . .


是短文件名造成的吗?

Q2:
如何才能只列出5字符而不列出1-4字符的目录?
2 发表于 2008-07-17 13:41 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
dir /ad /b | sed -n "/^......$/p"
3 发表于 2008-07-17 17:50 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
Originally posted by HAT at 2008-7-17 01:41 PM:
dir /ad /b | sed -n "/^......$/p"


No use
4 发表于 2008-07-17 17:59 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
指定列出5个字符的目录名:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /ad /b') do (
set str=%%~ni
if "!str:~5!" equ "" if "!str:~4!" neq "" echo %%i
)
pause>nul


[ Last edited by zw19750516 on 2008-7-17 at 06:20 PM ]
批处理之家新域名:www.bathome.net
5 发表于 2008-07-17 18:13 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?
6 发表于 2008-07-17 18:15 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
Originally posted by HAT at 2008-7-17 18:13:
在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?

sed 的点 应该是匹配一个字节吧,若文件名含有中文,是否会显示错误呢?
致精致简!
7 发表于 2008-07-18 00:19 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
Originally posted by HAT at 2008-7-17 06:13 PM:
在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?


有,Ver:4.0.7x
论坛跳转: