新足迹

 找回密码
 注册

精华好帖回顾

· 【三刀厨侠争霸赛】羞涩的酱色凤爪 (2008-10-20) 手指尖 · 这个礼拜已经让两个人拿到驾照了,发个帖子庆贺一下!! (2007-8-23) driveryao
· 参加征文-我和我的车 (2008-1-31) 大球球 · 好久没写足球啦 (2008-11-21) joaquin
Advertisement
Advertisement
查看: 1484|回复: 7

很弱的一个batch script问题 [复制链接]

发表于 2012-1-11 13:48 |显示全部楼层
此文章由 zurich 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zurich 所有!转贴必须注明作者、出处和本声明,并保持内容完整
太久没用DOS,什么都忘光了。有个很弱的batch script问题请教大家

在某文件夹下有四类文件
12345678.txt                (文件名为八位数字)
12345678_1234.txt          (文件名为八位数字_若干位数字)
12345678_NOTES.txt         (文件名为八位数字_NOTES)
12345678_NOTES_1234.txt     (文件名为八位数字_NOTES_若干位数字)

我想写一段batch script来创建4个file list分别对应这四类文件

后两类简单,
FOR %%c in (C:\test\*_NOTES.txt) DO echo %%c >> C:\test\List3.txt.
FOR %%c in (C:\test\*_NOTES_*.txt) DO echo %%c >> C:\test\List4.txt.

可前两类我实在没有头绪,还请论坛里的牛人解答
Advertisement
Advertisement

发表于 2012-1-11 14:10 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
use powershell script

Get-ChildItem c:\test |where-object {$_.Name -match "\d{8}.txt"} >> C:\test\list1.txt
Get-ChildItem c:\test |where-object {$_.Name -match "\d{8}_\d+.txt"} >> C:\test\list2.txt

评分

参与人数 1积分 +2 收起 理由
zurich + 2 多谢,不过有两个问题

查看全部评分

发表于 2012-1-11 14:13 |显示全部楼层
此文章由 stevenbian 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 stevenbian 所有!转贴必须注明作者、出处和本声明,并保持内容完整
FOR %%c in (C:\test\????????.txt) DO echo %%c >> C:\test\List1.txt.
FOR %%c in (C:\test\????????_????.txt) DO echo %%c >> C:\test\List2.txt.

评分

参与人数 1积分 +1 收起 理由
zurich + 1 和我开始想的一样,但不管用,会把后两种文件也列出来

查看全部评分

发表于 2012-1-11 15:13 |显示全部楼层
此文章由 zurich 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zurich 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 无视 于 2012-1-11 14:10 发表
use powershell script

Get-ChildItem c:\test |where-object {$_.Name -match "\d{8}.txt"} >> C:\test\list1.txt
Get-ChildItem c:\test |where-object {$_.Name -match "\d{8}_\d+.txt"} >> C:\test\list2.txt ...


多谢,不过有两个问题:
1、filelist的内容是这样的
    Directory: C:\test

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
-a---        14/12/2011   3:31 PM       2204 00000199.txt                     

能不能只显示路径和文件名?比如 C:\test\00000199.txt

2、有没有不用powershell只用普通的batch script的法子呢?

[ 本帖最后由 zurich 于 2012-1-11 15:14 编辑 ]

发表于 2012-1-11 15:52 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 zurich 于 2012-1-11 15:13 发表


多谢,不过有两个问题:
1、filelist的内容是这样的
    Directory: C:\test

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ---- ...


No worries.

1.Get-ChildItem C:\test |where-object {$_.Name -match "\d{8}.txt"} |  foreach-object {$_.Fullname} | out-file c:\test\list1.txt
  Get-ChildItem C:\test |where-object {$_.Name -match "\d{8}_\d+.txt"} |  foreach-object {$_.Fullname} | out-file c:\test\list2.txt

2. I don't know much about batch scripting, I think it's been deprecated.

评分

参与人数 1积分 +2 收起 理由
zurich + 2 感谢分享

查看全部评分

发表于 2012-1-12 09:02 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我都习惯用PHP了,很容易达到同等效果
Advertisement
Advertisement

发表于 2012-1-12 22:38 |显示全部楼层
此文章由 bluesknight 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bluesknight 所有!转贴必须注明作者、出处和本声明,并保持内容完整
还有个办法是写个vb script,用batch调用就行了
头像被屏蔽

禁止访问

发表于 2012-1-12 22:43 |显示全部楼层
此文章由 自由的心 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 自由的心 所有!转贴必须注明作者、出处和本声明,并保持内容完整
要是我记性很不好,可能会问dos是什么东西啊?

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部