问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何从一个txt文件中提取一行文字作为文件名?

发布网友 发布时间:2022-09-25 02:27

我来回答

2个回答

热心网友 时间:2023-09-15 03:32

是用批处理命令来完成这一问题
不是vbs
楼住的意思我知道
我保存的时候也是这样
今天看都这个问题
于是想动手实现一下
说不定以后用的着
想了一下午
才得到方法
提取第一行并不是那么简单
我想用for命令但是失败了
于是采用find命令
/N参数可以显示行号
/V参数可以显示不包含的行
/C参数表示只输出符合条件的行数
有一个技巧是
如果想知道一个文件有多少行的话
可以这样
假设对于文本文件a.txt
type a.txt | find /V /C ""
意思是显示出a.txt来
在其中找出不含有""的行来
并输出行数
那么由于每一行都没有""这个东西
所以显示了所有的行

怎么得到第一行呢
可以通过显示所有的行号
然后在输出中寻找"[1]"
这是第一行的标志
但是也许有的行本来就含有"[1]"
所以我们迭代几次
寻找"[1][1][1][1][1]”那么出错的几率就小得多了

将得到的一若干"[1]"和第一行组成的串保存到一文件
利用for的/F参数 设置"]"为分隔符
取最后一个元素就得到了第一行的本来内容
最后将临时文件删除

好了
代码贴出来:

@echo off
type %1 | find /V /N "" | find /N "[1]" | find /N "[1][1]" | find /N "[1][1][1]" | find /N "[1][1][1][1]">_n_a_m_e_.txt
for /F "delims=] tokens=1,2,3,4,5,*" %%a in (_n_a_m_e_.txt) do @ren %1 %%f%~x1
del _n_a_m_e_.txt

这样就好了
注意只有四行
建议复制到记事本看
保存为re.bat就好了
比如将文件1.txt处理的话
在CMD下输入re 1.txt
那么假设那文件第一行是good的话
那么它将被重命名为good.txt

也许这还不是很方便
我们可能有很多这样的文件放在一目录下
那么可以再引进一个批处理
用它来实现自动调用

@echo off
for %%i in (%~f1\*.txt) do @call re.bat %%~fi

保存为doo.bat那么处理D盘dl目录的命令是
doo D:\dl
这样dl目录下的所有文件得到处理

最后再说几个问题
如果有几个文件的第一行相同
那么有的将得不到处理
因为不能重名

如果文件里本来就有[1][1][1][1][1]
这样的串也会有问题
只有更多的迭代
但是这样的情况很少见

如果你也需要处理子目录下的文件
那么可以结合for /R命令
这里我不考虑了

这里的方法需要两个文件
也可以合成一个
就是用第二个生成第一个
就像处理注册表文件一样
大家自己解决下吧
有人提问的话我再发贴解决

已经在XP系统上测试
本人原创,累死了

热心网友 时间:2023-09-15 03:33

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
WMISQL = "ASSOCIATORS OF {Win32_Directory.Name='" & WScript.Arguments(0) &"'} Where ResultClass = CIM_DataFile"
Set FileList = objWMIService.ExecQuery(WMISQL)
For Each objFile In FileList
strNewName = objFile.Drive & objFile.Path & _
objFile.FileName & "." & objFile.Extension & "." & WScript.Arguments(1)
errResult = objFile.Rename(strNewName)
' Wscript.Echo strNewName
Next

^^^^^^^^^^^^^^^^^^^
把上面的内容粘贴复制到记事本中,保存为AddExt.vbs

然后在命令行方式运行
c:\>AddExt.vbs e:\temp 5

e:\temp:就是您需要修改文件的目录
5:是你的新的扩展名

如果您以前的文件名称为abc.def
执行的结果为:
abc.def.5

热心网友 时间:2023-09-15 03:32

是用批处理命令来完成这一问题
不是vbs
楼住的意思我知道
我保存的时候也是这样
今天看都这个问题
于是想动手实现一下
说不定以后用的着
想了一下午
才得到方法
提取第一行并不是那么简单
我想用for命令但是失败了
于是采用find命令
/N参数可以显示行号
/V参数可以显示不包含的行
/C参数表示只输出符合条件的行数
有一个技巧是
如果想知道一个文件有多少行的话
可以这样
假设对于文本文件a.txt
type a.txt | find /V /C ""
意思是显示出a.txt来
在其中找出不含有""的行来
并输出行数
那么由于每一行都没有""这个东西
所以显示了所有的行

怎么得到第一行呢
可以通过显示所有的行号
然后在输出中寻找"[1]"
这是第一行的标志
但是也许有的行本来就含有"[1]"
所以我们迭代几次
寻找"[1][1][1][1][1]”那么出错的几率就小得多了

将得到的一若干"[1]"和第一行组成的串保存到一文件
利用for的/F参数 设置"]"为分隔符
取最后一个元素就得到了第一行的本来内容
最后将临时文件删除

好了
代码贴出来:

@echo off
type %1 | find /V /N "" | find /N "[1]" | find /N "[1][1]" | find /N "[1][1][1]" | find /N "[1][1][1][1]">_n_a_m_e_.txt
for /F "delims=] tokens=1,2,3,4,5,*" %%a in (_n_a_m_e_.txt) do @ren %1 %%f%~x1
del _n_a_m_e_.txt

这样就好了
注意只有四行
建议复制到记事本看
保存为re.bat就好了
比如将文件1.txt处理的话
在CMD下输入re 1.txt
那么假设那文件第一行是good的话
那么它将被重命名为good.txt

也许这还不是很方便
我们可能有很多这样的文件放在一目录下
那么可以再引进一个批处理
用它来实现自动调用

@echo off
for %%i in (%~f1\*.txt) do @call re.bat %%~fi

保存为doo.bat那么处理D盘dl目录的命令是
doo D:\dl
这样dl目录下的所有文件得到处理

最后再说几个问题
如果有几个文件的第一行相同
那么有的将得不到处理
因为不能重名

如果文件里本来就有[1][1][1][1][1]
这样的串也会有问题
只有更多的迭代
但是这样的情况很少见

如果你也需要处理子目录下的文件
那么可以结合for /R命令
这里我不考虑了

这里的方法需要两个文件
也可以合成一个
就是用第二个生成第一个
就像处理注册表文件一样
大家自己解决下吧
有人提问的话我再发贴解决

已经在XP系统上测试
本人原创,累死了

热心网友 时间:2023-09-15 03:33

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
WMISQL = "ASSOCIATORS OF {Win32_Directory.Name='" & WScript.Arguments(0) &"'} Where ResultClass = CIM_DataFile"
Set FileList = objWMIService.ExecQuery(WMISQL)
For Each objFile In FileList
strNewName = objFile.Drive & objFile.Path & _
objFile.FileName & "." & objFile.Extension & "." & WScript.Arguments(1)
errResult = objFile.Rename(strNewName)
' Wscript.Echo strNewName
Next

^^^^^^^^^^^^^^^^^^^
把上面的内容粘贴复制到记事本中,保存为AddExt.vbs

然后在命令行方式运行
c:\>AddExt.vbs e:\temp 5

e:\temp:就是您需要修改文件的目录
5:是你的新的扩展名

如果您以前的文件名称为abc.def
执行的结果为:
abc.def.5
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
盖百霖白斑遮盖液的容量可以用多久呢? 胸口有快挺大的白斑,夏天怎么能遮挡住?? 盖百霖白斑遮盖液有多久了? ForteBio Octet分子相互作用实验服务 生物实验室仪器有哪些 生物实验室仪器设备大全 生物实验仪器有哪些 【应用指南】微量热泳动仪MST,助力分子间相互作用分析! 中国科学技术大学生物科学实验中心科学研究 为什么现在用三星的人越来越少? 三星Galaxy系列为什么不保值? S系列更新周期和iPhone不都是一年吗? 为... 如何用bat提取txt指定字符? 从TXT文本里提取特定的一些文字,并将他保存为另外的文本里 关于如何用bat提取txt中指定内容? 深度分析上能电气?股票上能电气股吧?牛叉诊股上能电气? 菠萝上的细菌有啥危害,要怎么办才能吃 爸爸姓李,妈妈姓徐,什么小名好听有意义 不知道时辰能算八字么 不知道具体的时间能算生辰八字吗 八字必须要时辰才能算吗,看八字,不知道具体时辰,就不能算吗 做好PPT的10条建议 宝宝吃百香果的营养价值 宝宝吃百香果有什么营养成分 技师职业资格考评申报表 (电工)怎么填?有没有范文? 现场工作总结 MathType如何更改行距 结合美国为首的“北约”轰炸南联盟的史实,说说你对“北约”本质的认识。 北京什么地方好玩又便宜? 我梦见和己故父亲走到草堆边草堆倒了压到父亲,我用力去救助。这是什么意思? 做梦把去世的老爸托在两手手心里,把他藏起来在草堆中,怕坏人找到他。 蒲公英最佳搭配 这样搭配最佳 一百平地板是80*80的,你觉得需要准备多少美缝剂? 如何提取TXT文档中每行的前几个文字 请问如何批量提取txt文档中的第一行文字并存入新的文本文档? 批处理如何提取TXT文本里指定行内容? 批处理,提取txt文档中内容 我的不能邀请别人进群了 为啥 是不是我邀请的太频繁 上面显示 未能添加成员 请稍后再试 想去甘肃有没有好用手机导航? 请高手制定一条甘肃自助游的路线! 熬夜保养皮肤的方法有哪些 熬夜皮肤保养法则 如何规避采购风险 京东e卡能买高铁票吗 河南省考考卷一般都是什么时候出好,大概距离考试几天前? 柴虫的养殖方法有人知道吗,还有它在什么季节最旺盛,一般在什么树上最... 大病初愈的患者适合吃补品吗?你觉得可以食用哪些补品? 老年人大病初愈可以吃燕窝吗? 什么样的人适合吃燕窝 适合吃燕窝的人群有哪些 属蛇生什么属相宝宝好,属龙的和属蛇的生什么属相的宝宝好 属蛇人生什么属相孩子最好,属蛇的属相生个什么属相的孩子好 为什么好氧池要回流部分污泥到厌氧池? 西安高新第十二小学是哪个名校分校?