Batch file 批处理脚本-双引号,消失行
我一直在寻找答案,但没有找到任何结论性的解决办法。我几乎什么都有,所以我想我错过了什么 我正在创建一个批处理脚本,它将文件名作为参数,并从中创建一个avisynth脚本 见下文:Batch file 批处理脚本-双引号,消失行,batch-file,echo,Batch File,Echo,我一直在寻找答案,但没有找到任何结论性的解决办法。我几乎什么都有,所以我想我错过了什么 我正在创建一个批处理脚本,它将文件名作为参数,并从中创建一个avisynth脚本 见下文: echo.#BEGIN------------------------------------------------------------------------- >> %~n1-timecode.avs echo.#Found at: http://superuser.com/questions/1
echo.#BEGIN------------------------------------------------------------------------- >> %~n1-timecode.avs
echo.#Found at: http://superuser.com/questions/113666/how-can-i-burn-a-timecode-into-a-movie-file >> %~n1-timecode.avs
echo.global xPos = 10 >> %~n1-timecode.avs
echo.global yPos = 10 >> %~n1-timecode.avs
echo.global subsize = 40 >> %~n1-timecode.avs
echo.global subfont = "Arial" >> %~n1-timecode.avs
echo.#------------------------------------------------------------------------------ >> %~n1-timecode.avs
echo.function SubtitleTime( obj ) >> %~n1-timecode.avs
echo.{ >> %~n1-timecode.avs
echo. obj = ScriptClip( obj, "Subtitle( >> %~n1-timecode.avs
echo. \ String( chr(32) ) >> %~n1-timecode.avs
echo. \ + String( RightStr( String( ((int(current_frame/Framerate)/60)/60) ), 2 ) ) >> %~n1-timecode.avs
echo. \ + String( chr(58) ) >> %~n1-timecode.avs
echo. \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate)/60)-(((int(current_frame/Framerate)/60)/60)*60) ) ), 2 ) ) >> %~n1-timecode.avs
echo. \ + String( chr(58) ) >> %~n1-timecode.avs
echo. \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate))-(((int(current_frame/Framerate))/60)*60) ) ), 2 ) ) >> %~n1-timecode.avs
echo. \ + MidStr( String( (current_frame/Framerate) - (int(current_frame/Framerate)) ), 2, 4 ) >> %~n1-timecode.avs
echo. \ , font=subfont, size=subsize, x=xPos, y=yPos) >> %~n1-timecode.avs
echo. \ ") >> %~n1-timecode.avs
echo. return obj >> %~n1-timecode.avs
echo.} >> %~n1-timecode.avs
echo.#------------------------------------------------------------------------------ >> %~n1-timecode.avs
echo.DirectshowSource("%1").SubtitleTime >> %~n1-timecode.avs
echo.#END--------------------------------------------------------------------------- >> %~n1-timecode.avs
但以下两行给出了问题:
echo. obj = ScriptClip( obj, "Subtitle( >> %~n1-timecode.avs
echo. \ ") >> %~n1-timecode.avs
我试过双引号,反斜杠,^。。。它们都不起作用-要么显示双引号,要么显示行。任何人都能给我一个如何解决这个问题的提示吗 有问题的行中的不平衡引号将重定向转换为字符串文字,而不是重定向操作。修复原始代码的最快方法是避开不恰当的引号
@echo off
> "%~n1-timecode.avs" break
>> "%~n1-timecode.avs" echo.#BEGIN-------------------------------------------------------------------------
>> "%~n1-timecode.avs" echo.#Found at: http://superuser.com/questions/113666/how-can-i-burn-a-timecode-into-a-movie-file
>> "%~n1-timecode.avs" echo.global xPos = 10
>> "%~n1-timecode.avs" echo.global yPos = 10
>> "%~n1-timecode.avs" echo.global subsize = 40
>> "%~n1-timecode.avs" echo.global subfont = "Arial"
>> "%~n1-timecode.avs" echo.#------------------------------------------------------------------------------
>> "%~n1-timecode.avs" echo.function SubtitleTime( obj )
>> "%~n1-timecode.avs" echo.{
>> "%~n1-timecode.avs" echo. obj = ScriptClip( obj, "Subtitle(
>> "%~n1-timecode.avs" echo. \ String( chr(32) )
>> "%~n1-timecode.avs" echo. \ + String( RightStr( String( ((int(current_frame/Framerate)/60)/60) ), 2 ) )
>> "%~n1-timecode.avs" echo. \ + String( chr(58) )
>> "%~n1-timecode.avs" echo. \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate)/60)-(((int(current_frame/Framerate)/60)/60)*60) ) ), 2 ) )
>> "%~n1-timecode.avs" echo. \ + String( chr(58) )
>> "%~n1-timecode.avs" echo. \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate))-(((int(current_frame/Framerate))/60)*60) ) ), 2 ) )
>> "%~n1-timecode.avs" echo. \ + MidStr( String( (current_frame/Framerate) - (int(current_frame/Framerate)) ), 2, 4 )
>> "%~n1-timecode.avs" echo. \ , font=subfont, size=subsize, x=xPos, y=yPos)
>> "%~n1-timecode.avs" echo. \ ")
>> "%~n1-timecode.avs" echo. return obj
>> "%~n1-timecode.avs" echo.}
>> "%~n1-timecode.avs" echo.#------------------------------------------------------------------------------
>> "%~n1-timecode.avs" echo.DirectshowSource("%1").SubtitleTime
>> "%~n1-timecode.avs" echo.#END---------------------------------------------------------------------------
echo. obj = ScriptClip( obj, ^"Subtitle( >> %~n1-timecode.avs
echo. \ ^") >> %~n1-timecode.avs
但是您的代码在输出的每行末尾都有额外的空格
您可以像mcnd那样将重定向移动到前端,这样可以安全地消除额外的空间
请注意,如果在重定向之前删除任何空间,即使在结尾重定向时也可以删除空间,但这在全局声明行中不起作用,因为结尾的数字将被视为重定向的一部分
但是有一个更简单的解决方案,它运行得更快,因为它只需要打开并定位输出文件的文件位置一次:-)
有时您的输出可能有需要转义的特殊字符。在这种情况下,这样做可能更容易避免任何逃逸:
>> %~n1-timecode.avs (
for /f "tokens=* delims=:" %%L in ('findstr /b ::: "%~f0"') do echo(%%L
)
:::#BEGIN-------------------------------------------------------------------------
:::#Found at: http://superuser.com/questions/113666/how-can-i-burn-a-timecode-into-a-movie-file
:::global xPos = 10
:::global yPos = 10
:::global subsize = 40
:::global subfont = "Arial"
:::#------------------------------------------------------------------------------
:::function SubtitleTime( obj )
:::{
::: obj = ScriptClip( obj, "Subtitle(
::: \ String( chr(32) )
::: \ + String( RightStr( String( ((int(current_frame/Framerate)/60)/60) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate)/60)-(((int(current_frame/Framerate)/60)/60)*60) ) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate))-(((int(current_frame/Framerate))/60)*60) ) ), 2 ) )
::: \ + MidStr( String( (current_frame/Framerate) - (int(current_frame/Framerate)) ), 2, 4 )
::: \ , font=subfont, size=subsize, x=xPos, y=yPos)
::: \ ")
::: return obj
:::}
:::#------------------------------------------------------------------------------
:::DirectshowSource("%1").SubtitleTime
:::#END---------------------------------------------------------------------------
有问题的行中的不平衡引号将重定向转换为字符串文字,而不是重定向操作。修复原始代码的最快方法是避开不恰当的引号
echo. obj = ScriptClip( obj, ^"Subtitle( >> %~n1-timecode.avs
echo. \ ^") >> %~n1-timecode.avs
但是您的代码在输出的每行末尾都有额外的空格
您可以像mcnd那样将重定向移动到前端,这样可以安全地消除额外的空间
请注意,如果在重定向之前删除任何空间,即使在结尾重定向时也可以删除空间,但这在全局声明行中不起作用,因为结尾的数字将被视为重定向的一部分
但是有一个更简单的解决方案,它运行得更快,因为它只需要打开并定位输出文件的文件位置一次:-)
有时您的输出可能有需要转义的特殊字符。在这种情况下,这样做可能更容易避免任何逃逸:
>> %~n1-timecode.avs (
for /f "tokens=* delims=:" %%L in ('findstr /b ::: "%~f0"') do echo(%%L
)
:::#BEGIN-------------------------------------------------------------------------
:::#Found at: http://superuser.com/questions/113666/how-can-i-burn-a-timecode-into-a-movie-file
:::global xPos = 10
:::global yPos = 10
:::global subsize = 40
:::global subfont = "Arial"
:::#------------------------------------------------------------------------------
:::function SubtitleTime( obj )
:::{
::: obj = ScriptClip( obj, "Subtitle(
::: \ String( chr(32) )
::: \ + String( RightStr( String( ((int(current_frame/Framerate)/60)/60) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate)/60)-(((int(current_frame/Framerate)/60)/60)*60) ) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate))-(((int(current_frame/Framerate))/60)*60) ) ), 2 ) )
::: \ + MidStr( String( (current_frame/Framerate) - (int(current_frame/Framerate)) ), 2, 4 )
::: \ , font=subfont, size=subsize, x=xPos, y=yPos)
::: \ ")
::: return obj
:::}
:::#------------------------------------------------------------------------------
:::DirectshowSource("%1").SubtitleTime
:::#END---------------------------------------------------------------------------
有问题的行中的不平衡引号将重定向转换为字符串文字,而不是重定向操作。修复原始代码的最快方法是避开不恰当的引号
echo. obj = ScriptClip( obj, ^"Subtitle( >> %~n1-timecode.avs
echo. \ ^") >> %~n1-timecode.avs
但是您的代码在输出的每行末尾都有额外的空格
您可以像mcnd那样将重定向移动到前端,这样可以安全地消除额外的空间
请注意,如果在重定向之前删除任何空间,即使在结尾重定向时也可以删除空间,但这在全局声明行中不起作用,因为结尾的数字将被视为重定向的一部分
但是有一个更简单的解决方案,它运行得更快,因为它只需要打开并定位输出文件的文件位置一次:-)
有时您的输出可能有需要转义的特殊字符。在这种情况下,这样做可能更容易避免任何逃逸:
>> %~n1-timecode.avs (
for /f "tokens=* delims=:" %%L in ('findstr /b ::: "%~f0"') do echo(%%L
)
:::#BEGIN-------------------------------------------------------------------------
:::#Found at: http://superuser.com/questions/113666/how-can-i-burn-a-timecode-into-a-movie-file
:::global xPos = 10
:::global yPos = 10
:::global subsize = 40
:::global subfont = "Arial"
:::#------------------------------------------------------------------------------
:::function SubtitleTime( obj )
:::{
::: obj = ScriptClip( obj, "Subtitle(
::: \ String( chr(32) )
::: \ + String( RightStr( String( ((int(current_frame/Framerate)/60)/60) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate)/60)-(((int(current_frame/Framerate)/60)/60)*60) ) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate))-(((int(current_frame/Framerate))/60)*60) ) ), 2 ) )
::: \ + MidStr( String( (current_frame/Framerate) - (int(current_frame/Framerate)) ), 2, 4 )
::: \ , font=subfont, size=subsize, x=xPos, y=yPos)
::: \ ")
::: return obj
:::}
:::#------------------------------------------------------------------------------
:::DirectshowSource("%1").SubtitleTime
:::#END---------------------------------------------------------------------------
有问题的行中的不平衡引号将重定向转换为字符串文字,而不是重定向操作。修复原始代码的最快方法是避开不恰当的引号
echo. obj = ScriptClip( obj, ^"Subtitle( >> %~n1-timecode.avs
echo. \ ^") >> %~n1-timecode.avs
但是您的代码在输出的每行末尾都有额外的空格
您可以像mcnd那样将重定向移动到前端,这样可以安全地消除额外的空间
请注意,如果在重定向之前删除任何空间,即使在结尾重定向时也可以删除空间,但这在全局声明行中不起作用,因为结尾的数字将被视为重定向的一部分
但是有一个更简单的解决方案,它运行得更快,因为它只需要打开并定位输出文件的文件位置一次:-)
有时您的输出可能有需要转义的特殊字符。在这种情况下,这样做可能更容易避免任何逃逸:
>> %~n1-timecode.avs (
for /f "tokens=* delims=:" %%L in ('findstr /b ::: "%~f0"') do echo(%%L
)
:::#BEGIN-------------------------------------------------------------------------
:::#Found at: http://superuser.com/questions/113666/how-can-i-burn-a-timecode-into-a-movie-file
:::global xPos = 10
:::global yPos = 10
:::global subsize = 40
:::global subfont = "Arial"
:::#------------------------------------------------------------------------------
:::function SubtitleTime( obj )
:::{
::: obj = ScriptClip( obj, "Subtitle(
::: \ String( chr(32) )
::: \ + String( RightStr( String( ((int(current_frame/Framerate)/60)/60) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate)/60)-(((int(current_frame/Framerate)/60)/60)*60) ) ), 2 ) )
::: \ + String( chr(58) )
::: \ + String( RightStr( String( String( 0 ) + String( (int(current_frame/Framerate))-(((int(current_frame/Framerate))/60)*60) ) ), 2 ) )
::: \ + MidStr( String( (current_frame/Framerate) - (int(current_frame/Framerate)) ), 2, 4 )
::: \ , font=subfont, size=subsize, x=xPos, y=yPos)
::: \ ")
::: return obj
:::}
:::#------------------------------------------------------------------------------
:::DirectshowSource("%1").SubtitleTime
:::#END---------------------------------------------------------------------------
当你回显这两行时,你在文件中得到了什么?更重要的是,你想得到什么…如果它在一个循环中,那么这就是区别。当你回显这两行时,你在文件中得到了什么?更重要的是,你想得到什么…如果它在一个循环中,那么这就是区别。当你回显这两行中的每一行时,你在文件中得到了什么?更重要的是,你想得到什么…如果它在一个循环中,那么这就是区别。当你回显这两行中的每一行时,你在文件中得到了什么?更重要的是,你想要得到什么…如果它在一个循环中,那么这就是区别。