【问题标题】:rename text file to the content text (batch) (powershell) [closed]将文本文件重命名为内容文本(批处理)(powershell)[关闭]
【发布时间】:2020-02-11 12:09:06
【问题描述】:

好的,正如标题所说,我需要一种将文本文档重命名为文本文档中的文本的方法,因此如果文档有此文本(蛋糕),则需要将文件名重命名为蛋糕。

【问题讨论】:

  • 到目前为止您尝试过什么?你有什么问题?
  • 我只在互联网上看了 5 个小时,我找不到有用的东西,这就是我问的原因
  • 请注意您的问题过于宽泛。请就您提供的代码的特定问题提出问题。这个问题应该只有一个,所以选择是发布失败的批处理文件还是发布失败的 powershell 脚本。除了格式正确的代码外,我们还需要知道一些示例文本文件名、它们的新名称、这些文件的内容是什么样的,以及在运行时发生了什么不想要的。
  • @Compo 如果您阅读了我对您的评论所说的话,那么您可以看到我已经尝试了 5 个小时,但还没有找到有效的方法,这就是为什么我要问是否有一种方式
  • 如果文本文件多于一行怎么办?那么文件应该取什么名字呢?

标签: powershell batch-file cmd scripting batch-rename


【解决方案1】:

这是一个批处理伪代码,它使用带有 vbscript 的正则表达式,以便在读取文本文件时读取并匹配文本文件中的第一个单词,然后如果文件不为空,脚本将重命名您的文本包含从 vbscript 中提取的变量的文件。

如何测试这段代码?

只需复制并粘贴以下代码并将其另存为Rename-First-Word-Content.bat,然后在批处理的同一文件夹中创建一个名为Test.txt 的文本文件,并在其上写一些文字并保存。最后只需双击批处理即可查看结果!

@echo off
Set "InputFile=Test.txt"
Call :Extract "%InputFile%" NewName
If defined NewName (
    echo NewName = "%NewName%"
    Ren "%InputFile%" "%NewName%.txt"
)
pause & exit
::-----------------------------------------------------------------------------------
:Extract <InputFile> <Variable NewName to be Set>
(
    echo WScript.StdOut.WriteLine Extract(Data^)
    echo Function Extract(Data^)
    echo Dim strPattern,oRegExp,Matches
    echo Data = "%~1" 
    echo Data = WScript.StdIn.ReadAll
    echo strPattern = "[^-_\\/:;\x22*.?<>|]([\w\-]+)"
    echo Set oRegExp = New RegExp
    echo oRegExp.Global = False  
    echo oRegExp.IgnoreCase = True 
    echo oRegExp.Pattern = strPattern
    echo set colMatches = oRegExp.Execute(Data^) 
    echo For Each Match in colMatches
    echo    Content = Match.Value
    echo Next
    echo Extract = Content
    echo End Function
)>"%tmp%\%~n0.vbs"
@For /f "delims=" %%i in ('cscript //nologo "%tmp%\%~n0.vbs" ^< "%~1" 2^>nul') do Set "%2=%%i"
If Exist "%tmp%\%~n0.vbs" Del "%tmp%\%~n0.vbs"
Exit /B
::----------------------------------------------------------------------------------

【讨论】:

  • 好的,谢谢你的帮助:我只有一个问题,代码可以包含点(文本中有点)吗?
  • 但它正在工作
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2014-02-26
  • 1970-01-01
相关资源
最近更新 更多