Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 长文件名和Win10控制台VT-100转义序列的奇怪行为_Batch File_Windows 10_Windows Console_Ansi Escape - Fatal编程技术网

Batch file 长文件名和Win10控制台VT-100转义序列的奇怪行为

Batch file 长文件名和Win10控制台VT-100转义序列的奇怪行为,batch-file,windows-10,windows-console,ansi-escape,Batch File,Windows 10,Windows Console,Ansi Escape,我有一个Windows 10批处理文件,在目录中的所有文件上运行ffprobe。每个文件名在屏幕上的特定行上显示。处理下一个文件时,上一个文件名将被擦除,下一个文件名将写入同一行(因此文件名不会在屏幕上显示)。我注意到,对于长度超过120个字符的文件名,我在某种程度上使用的VT100转义序列是break。以下是我的代码中适用的部分: echo Checking files...... for %%a in ("*.*") do ( set filename=%%a for /f

我有一个Windows 10批处理文件,在目录中的所有文件上运行ffprobe。每个文件名在屏幕上的特定行上显示。处理下一个文件时,上一个文件名将被擦除,下一个文件名将写入同一行(因此文件名不会在屏幕上显示)。我注意到,对于长度超过120个字符的文件名,我在某种程度上使用的VT100转义序列是break。以下是我的代码中适用的部分:

echo Checking files......

for %%a in ("*.*") do (
    set filename=%%a
    for /f "tokens=1,2,3 delims=," %%a in ('ffprobe [...]') do (
        set codec=%%b
    )

    set /p="%ESC%[1G%ESC%[2K%%~a"<nul
)

set /p="%ESC%[A%ESC%[1G%ESC%[2K"<nul
echo检查文件。。。。。。
对于(“**”)中的%%a,请执行以下操作(
设置文件名=%%a
对于/f“tokens=1,2,3 delims=,”%%a in('ffprobe[…])do(
设置编解码器=%%b
)

set/p=“%ESC%[1G%ESC%[2K%%~a”控制台窗口可能不够宽,无法在一行上显示124个字符。因此文本会溢出到下一行。唯一可行的解决方法是将窗口变大,按Alt+Space>Properties>Layout。使用尾部实用程序可能是更好的方法。@HansPassant就是这样。谢谢。您可以使用
cls
命令或clear screen and home的转义序列。这样,您就不必关心控制台窗口的宽度。@jwdonahue cls不是一个好选项,因为屏幕上还有其他需要删除的东西。我有一个在早期版本中编写的子例程,可以切断文件na我可以在很长的文件名上使用特定数量的字符。