Board logo

标题: 通配符“?”问题 [打印本页]

作者: radem     时间: 2008-7-17 12:07    标题: 通配符“?”问题
  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字符的目录?

作者: HAT     时间: 2008-7-17 13:41
dir /ad /b | sed -n "/^......$/p"

作者: radem     时间: 2008-7-17 17:50
Originally posted by HAT at 2008-7-17 01:41 PM:
dir /ad /b | sed -n "/^......$/p"
No use

作者: bat-zw     时间: 2008-7-17 17:59
指定列出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 ]

作者: HAT     时间: 2008-7-17 18:13
在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?

作者: 26933062     时间: 2008-7-17 18:15
Originally posted by HAT at 2008-7-17 18:13: 在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?
sed 的点 应该是匹配一个字节吧,若文件名含有中文,是否会显示错误呢?

作者: radem     时间: 2008-7-18 00:19
Originally posted by HAT at 2008-7-17 06:13 PM: 在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?
有,Ver:4.0.7x