批处理脚本或 CMD 一次只能处理 70 个文件吗?

批处理脚本或 CMD 一次只能处理 70 个文件吗?

我为 vgmstream 编写了一个脚本,该脚本使用一些自定义选项(如输出路径和日志记录)解码音频流。我注意到,如果我使用脚本超过 70 个文件,脚本就会在终端中终止,值得注意的是:我有许多类似的项目,它们都存在同样的问题。我的代码中存在问题,还是这是 Windows 命令处理器的固有限制?


title vgmstream Decoder

md "%~dp1vgmstream" & cls
for %%f in (%*) do (
(
echo [%date:~-10,2%/%date:~-7,2%/%date:~-4,4% @ %time:~0,2%:%time:~3,2%]
echo Infile: %%~nxf
echo Size: %%~zf bytes
echo Codec: WAV
echo Outfile: %%~nf.wav
echo.
)>>"%~dp1vgmstream\vgmstream.log"
"%~dp0vgmstream-cli.exe" %%f -o "%~dp1vgmstream\%%~nf.wav"
)
start "" notepad "%~dp1vgmstream\vgmstream.log"

答案1

@echo off & cd /d "%~dp0"

>nul 2>&1 mkdir "%~dp1vgmstream"
title <nul & title vgmstream Decoder

set "_out=%~dp1vgmstream\%%%%~nG.wav"
set "_log=%~dp1vgmstream\vgmstream.log"
set "_vgmstream=%~dp0vgmstream-cli.exe"

for /f usebackq^delims^= %%G in =;(` 
      "dir /b /a:-d "%~dp1*.wav""
    `);= do >>"%_log%" =;(
         echo/[%date:~-10,2%/%date:~-7,2%/%date:~-4,4% @ %time:~0,2%:%time:~3,2%]
         echo/Infile: %%~nxG
         echo/Size: %%~zG bytes
         echo/Codec: WAV
         echo/Outfile: %%~nG.wav
         echo/ 
        );= && call "%_vgmstream%" "%~dp1%%~nxG" -o "%_out%"

"%__AppDir__%timeout.exe" /t 5 | start "" /b notepad "%_log%"

我感觉你的问题出在你的参数上。我怀疑你正在将文件(其中几个 + 70 个)作为参数传递到你的 bat 中进行处理,这得到了证实,它生成了一条非常长的行,由于限制,最终支持/满足了达到前 70 个文件/参数的限制。

因为它们是通过for循环处理的,所以我建议您在循环中处理参数for /f,使用 eXtension 专门处理 popr 过滤器的文件.wav,而不是在简单的循环中逐个处理参数for


其他资源:

相关内容