将文本文件重命名为内容文本(批处理)(powershell)

rename text file to the content text (batch) (powershell)

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

这是一个批处理伪代码,它使用带有 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
::----------------------------------------------------------------------------------