【问题标题】:How to get particular code as output from a text file using batch?如何使用批处理从文本文件中获取特定代码作为输出?
【发布时间】:2018-01-20 09:53:01
【问题描述】:

我有一个带有 youtube 链接的文本文件,

文本文件 = url.txt ,其中包含,

https://www.youtube.com/watch?v=Videocode

我的需要是,通过运行批处理文件,如何仅将 Videocode 作为另一个文本文件中的输出。

例如,如果运行 url.bat 需要将“https://www.youtube.com/watch?v=Videocode”转换为“Videocode”

我希望你能理解我的需要。请给我一些解决方案。提前致谢。

【问题讨论】:

  • StackOverflow 是一个人们就他们研究、编写、运行和遇到问题的代码寻求帮助的网站。我们不是一个周末无事可做的专门脚本编写者的网站,而是为那些没有费心研究或尝试编写自己的代码的人免费工作。做一些研究,写一些代码,测试它,如果你遇到问题,将你的脚本内容发布到你的问题by editing it,并为我们提供足够的信息来帮助你修复它。
  • 我认为你需要这样的东西:Regular expression for youtube links 来提取你的“视频代码”,你应该用 vbscript 或 powershell 而不是批处理脚本来编写它

标签: batch-file cmd


【解决方案1】:

按字面意思理解问题,a 文本文件名为 url.txt,其中包含 a 链接,格式为 https://www.youtube.com/watch?v=Videocode、@987654323 @ 可以只包含这个:

@For /F "UseBackQ Tokens=2 Delims==&" %%A In ("C:\Users\niranja\Desktop\url.txt") Do @(Echo %%A)>"output.txt"

将路径更改为您的url.txtC:\Users\niranja\Desktop\,以适应;或者如果它与url.bat 位于同一位置,则完全删除该路径。您要查找的视频 ID 应写入与 url.bat 位于同一目录中的名为 output.txt 的文件中。

注意:如果所写的问题与您的真实意图不符,请查看 Hackoo 提供的链接并开始自己整理一些东西!

【讨论】:

    【解决方案2】:

    这是一个使用正则表达式提取“视频代码”的 vbscript 的想法

    Data = "https://www.youtube.com/watch?v=Videocode" & vbCrlf &_
    "http://www.youtube.com/watch?v=iwGFalTRHDA" & vbCrlf &_
    "http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related" & vbCrlf &_
    "http://youtu.be/iwGFalTRHDA" & vbCrlf &_
    "http://youtu.be/n17B_uFF4cA" & vbCrlf &_
    "http://www.youtube.com/embed/watch?feature=player_embedded&v=r5nB9u4jjy4" & vbCrlf &_
    "http://www.youtube.com/watch?v=t-ZRX8984sc" & vbCrlf &_
    "http://youtu.be/t-ZRX8984sc"
    Data_Extracted = Extract(Data,"http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)?‌​[\w\?‌​=]*)?")
    WScript.echo Data_Extracted
    '************************************************
    Function Extract(Data,Pattern)
       Dim oRE,oMatches,Match,Line
       set oRE = New RegExp
       oRE.IgnoreCase = True
       oRE.Global = True
       oRE.Pattern = Pattern
       set oMatches = oRE.Execute(Data)
       If not isEmpty(oMatches) then
           For Each Match in oMatches  
               Line = Line & Match.SubMatches(0) & vbcrlf
           Next
           Extract = Line
       End if
    End Function
    '************************************************
    

    编辑:使用带有 vbscript 的混合代码批处理

    @echo off
    Title Extract Videocode from Youtube links
    Set "Tmpvbs=%temp%\Tmpvbs.vbs"
    Set "InputFile=URL.txt"
    Set "OutPutFile=OutPutCode.txt"
    Call :Extract "%InputFile%" "%OutPutFile%"
    Start "" "%OutPutFile%" & exit
    ::****************************************************
    :Extract <InputData> <OutPutData>
    (
    echo Data = WScript.StdIn.ReadAll
    echo Data = Extract(Data,"http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/^)([\w\-\_]*)(&(amp;)?‌​[\w\?‌​=]*)?"^)
    echo WScript.StdOut.WriteLine Data
    echo '************************************************
    echo Function Extract(Data,Pattern^)
    echo    Dim oRE,oMatches,Match,Line
    echo    set oRE = New RegExp
    echo    oRE.IgnoreCase = True
    echo    oRE.Global = True
    echo    oRE.Pattern = Pattern
    echo    set oMatches = oRE.Execute(Data^)
    echo    If not isEmpty(oMatches^) then
    echo        For Each Match in oMatches  
    echo            Line = Line ^& Match.SubMatches(0^) ^& vbcrlf
    echo        Next
    echo        Extract = Line
    echo    End if
    echo End Function
    echo '************************************************
    )>"%Tmpvbs%"
    cscript /nologo "%Tmpvbs%" < "%~1" > "%~2"
    If Exist "%Tmpvbs%" Del "%Tmpvbs%"
    exit /b
    ::**********************************************************************************
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2012-12-25
      • 2017-04-23
      • 2019-01-08
      • 2016-04-29
      • 2013-09-14
      相关资源
      最近更新 更多