注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

蓝天堂

Venchia's Blog

 
 
 

日志

 
 

批量改名程序bat&vbs版  

2007-07-15 14:38:04|  分类: 天堂武馆 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

问题提出:

文本文件批量改名的问题

比如在某文件夹有若干文本文件,想在想提取这些文本文件的前两行,并组合更改文本文件的名字,不知道要怎么做呢

比如有这个文件

魔斗士.txt

文件的内容如下

  魔斗士

  作者:徐奇峰

【内容简介】

  身怀一身精湛武艺的张如飞,在一次醉酒之后意外与来自K星球的不明飞行器打了照面,并意外获得了有“南斗六星主生”功效的六粒丹药,此丹药能让受到意外伤害死亡的人起死回生并很快恢复到死前的状态。

  从此,张如飞走上了不平凡的道路。

文件前面都有4个半角字符,不过由于在这里会变形,所以用了两个全角字符代替

现在想提取文件的第一行和第二行,组合成

《魔斗士》作者:徐奇峰.txt

=======================================

http://bbs.verybat.cn/viewthread.php?tid=3392&page=1&extra=page%3D1

得到了bat的帮助,我稍微加了点修饰

@echo off

TITLE  ---====◇批量改名程序 By bat◇====---

CLS

::                  批量改名程序

::      **********************************************

::      *                                            *

::      *  说明: 1、提取文本文件前两行文字           *

::      *        2、组合成新的文件名                 *

::      *        3、例子:《文明》作者:智齿         *

::      *        4、能兼容原文件名带空格、&、感叹号  *

::      *  版本: 1.0                                 *

::      *  作者: bat@verybat                         *

::      **********************************************

for %%i in (*.txt) do call :re_name "%%i"

goto :eof

:re_name

set str=

set num=0

for /f "usebackq delims=" %%i in (%1) do (

    setlocal enabledelayedexpansion

    set /a num+=1

    if !num! equ 1 set "str=《%%i》"

    if !num! equ 2 (

        set "str=!str!%%i"

        set str=!str: =!

        set str=!str: =!

        ren %1 !str!.txt

        endlocal

        goto :eof

    )

)

goto :eof

============================================

如果需要隐藏窗口,可以用vbs或者js调用

js版的:

new ActiveXObject('WScript.Shell').Run('cmd /c rename.bat',0);

vbs1版的:

Set ws = CreateObject("Wscript.Shell")

ws.run "cmd /c rename.bat",vbhide

vbs2版的:

CreateObject("WScript.Shell").Run "cmd /c rename.bat",0

=======================================

在cndos上,也得到了热心朋友的帮助

http://www.cn-dos.net/forum/viewthread.php?tid=32455

ccwan提供了bat的另一个方法

=======================================

@echo off&setlocal enabledelayedexpansion

for /f %%a in ('dir/b *.txt') do (

    for /f "tokens=1* delims=:" %%i in ('findstr /n .* %%a') do (

    set "var=!var!%%j"

    set var=!var: =!

    if %%i equ 2 ren %%a 《%%~na》!var!.txt

    set var=

    )

)

=======================================

jmz573515和slore两个人提供了vbs的方法

=======================================

Set fso = CreateObject("Scripting.FileSystemObject")

Set folder = fso.getfolder(".")

For Each file In folder.files

    If UCase(Right(file,3)) = "TXT" Then

        With fso.OpenTextFile(file)

            n = "《" & Trim(.ReadLine) & "》"

            n = n & Trim(.ReadLine)

            .Close

        End With

        file.name = n & ".txt"

    End If

Next

Set folder = Nothing

Set fso = Nothing

=======================================

  评论这张
 
阅读(1272)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017