如何使用批处理从文本文件中获取特定代码作为输出?

时间:2018-01-20 09:53:01

标签: batch-file cmd

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

text file = url.txt,包含,

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

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

例如,如果我正在运行需要将“https://www.youtube.com/watch?v=Videocode”转换为“视频编码”的url.bat

我希望你明白我的需要。请给我一些解决方案。提前谢谢。

2 个答案:

答案 0 :(得分:0)

按字面意思提出问题,一个文本文件名为url.txt,其中包含 https://www.youtube.com/watch?v=Videocode a 链接>,url.bat可以包含这个:

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

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

注意:如果写的问题与您的真实意图不符,请查看Hackoo提供的链接并开始自己组合!

答案 1 :(得分:0)

这是一个使用正则表达式提取"视频编码"

的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
::**********************************************************************************