Board logo

标题: [文本处理] [已解决]批处理是否可以定义在FOR语句中变量的类型? [打印本页]

作者: playinthesky    时间: 2011-7-2 18:28     标题: [已解决]批处理是否可以定义在FOR语句中变量的类型?

本帖最后由 playinthesky 于 2011-7-2 22:28 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a  in (*.txt) do (
  3.      echo %%a
  4. )
  5. for /r %%b  in (*.txt) do (
  6.      echo %%b
  7. )
复制代码
比方说变量a,是否可以定义成仅为0-9之内的数值,变量b为A-Z之间的字母,是否可以把变量定义一个范围?求教,谢谢大家。
是限定出现的范围,只能显示0-9和A-Z的文字,
比方说有篇文章,内容是
我1234567爱zzzzssssddddd你
那显示出来就只能是
1234567zzzzssssddddd
自动忽略其他字符


或者
#@¥%¥……%&你为什么1234爱爱2222爱啊aa啊_++++

最后输出的时候 就只显示 12342222aa
作者: ArdentMan    时间: 2011-7-2 18:39

楼主想达到什么目的呢?
作者: jiulong    时间: 2011-7-2 19:29

  1. for /l %%a in (1,1,10) do echo %%a
复制代码
这样可以不?
如果不行就用
  1. random
复制代码
随机参数获取
作者: 601997526    时间: 2011-7-2 19:44

没看懂楼主的意思
如果是想要在for中只显示九次可以用set/a a+=1&if not !a! leq 9 echo %%a
如果是想要只显示以字母a-z开头的文件名可以用echo %%b|findstr "^[a-z].*$"
作者: playinthesky    时间: 2011-7-2 20:54

是限定出现的范围,只能显示0-9和A-Z的文字,
比方说有篇文章,内容是
我1234567爱zzzzssssddddd你
那显示出来就只能是
1234567zzzzssssddddd
自动忽略其他字符
作者: CrLf    时间: 2011-7-2 20:54

记得听别人说过,批处理中的变量是“弱类型”变量
作者: ArdentMan    时间: 2011-7-2 21:36

  1. Dim FSO, vbStr
  2. Set FSO = CreateObject("Scripting.FileSystemObject")
  3. vbStr = FSO.OpenTextFile("a.txt").ReadAll()
  4. Set FSO = Nothing
  5. MsgBox RegText(vbStr)
  6. Function RegText(RgStr)
  7.   Dim REGEX
  8.   Set REGEX = New RegExp
  9.   REGEX.Global = True
  10.   REGEX.IgnoreCase = True
  11.   REGEX.Pattern = "[^1-9A-Z\s]*([1-9A-Z\s]*)[^1-9A-Z\s]*"
  12.   RegText = REGEX.Replace(RgStr, "$1")
  13.   Set REGEX = Nothing
  14. End Function
复制代码

作者: CUer    时间: 2011-7-3 11:55

  1. sed "s/[^0-9a-zA-Z]//g" a.txt
复制代码





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