Board logo

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

作者: radem     时间: 2008-7-17 12:07    标题: 通配符“?”问题



  Quote:

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

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

  Quote:
...\批处理\批处理诗
...\批处理\批处理隐藏运行的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


  Quote:
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


  Quote:
Originally posted by HAT at 2008-7-17 18:13:
在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?

sed 的点 应该是匹配一个字节吧,若文件名含有中文,是否会显示错误呢?
作者: radem     时间: 2008-7-18 00:19


  Quote:
Originally posted by HAT at 2008-7-17 06:13 PM:
在确定是不是no use之前,能否确认一下你有没有sed.exe,版本是什么?

有,Ver:4.0.7x