batch-file - 从 for 循环中的变量中减去特定字符串

标签 batch-file ffmpeg

我正在使用 FFMPEG 批量制作文件转换器。
我在尝试从文件的完整链接中减去文件名以获取文件所在文件夹的目录时遇到问题,因此在文件转换后可以将其放入该目录中。
有人能告诉我如何从 filename 中减去字符串吗? directory 中字符串的变量
我的代码:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set filetype=.flac
for /R %%a in ("*%filetype%*") do (
    set directory=%%a
    set filename=%%~na%filetype%
    set convdir=!directory:%filename%=!
    echo !convdir!
    pause
    ffmpeg -i "%%a" "convdir%%~na.wav"
    echo Converted %%a
)
echo Convertion Done!
pause

最佳答案

这是我建议您执行任务的快速、未经测试的示例:

@Echo Off
SetLocal EnableExtensions
Set "TreeRoot=."
Set "FileGlob=*.flac"
Set "ConvExtn=.wav"
For /F "Delims=" %%G In (
    '"(Set PATHEXT=) & "%__APPDIR__%where.exe" /F /R "%TreeBase%" "%FileGlob%" 2> NUL"'
) Do (
    Echo Converting %%~G to %%~nG%ConvExtn%
    "ffmpeg.exe" -i %%G "%%~dpnG%ConvExtn%"
    If Not ErrorLevel 1 Echo Conversion completed.
)
"%__APPDIR__%timeout.exe" /T 5 1> NUL
只需调整行上的变量值35有必要的。我用过.作为树根,因为那是当前目录。但是请注意,您的代码没有定义当前目录,因此如果它应该 Root 于批处理文件本身的位置,您可能应该将其更改为 %~dp0. .

关于batch-file - 从 for 循环中的变量中减去特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64359675/

相关文章:

windows - 如何在 Windows 命令提示符下对变量进行字符串替换?

batch-file - 使用 ping.exe 的 ERRORLEVEL 测试 IP 可达性

windows - 如何最小化我的 bat 文件中的命令提示符

java - 运行 Jar 文件不起作用。找不到主程序

android - 在 APK 构建后从 Android gradle 执行 .bat

java - 编码器/解码器 PCM 到 AMR Android

ffmpeg - 我总共有 22.1 GB 的电影数据,我想把它放在几张 DVD 上

node.js - NodeJs 中的子进程生成输出文件和目录

linux - 如何从 ffmpeg 输出中提取持续时间?

java - 如何将自定义 java 模块加载到 Wowza 流引擎中?