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 从for循环中的变量中减去特定字符串_Batch File_Ffmpeg - Fatal编程技术网

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

Batch file 从for循环中的变量中减去特定字符串,batch-file,ffmpeg,Batch File,Ffmpeg,我正在使用FFMPEG制作一个批处理文件转换器 我在尝试从文件的完整链接中减去文件名以获取其所在文件夹的目录时遇到了一个问题,因此在转换文件后,可以将其放入该目录中 有人能告诉我如何从目录中的字符串中减去文件名变量中的字符串吗 我的代码: @echo off SETLOCAL ENABLEDELAYEDEXPANSION set filetype=.flac for /R %%a in ("*%filetype%*") do ( set directory=%%a

我正在使用FFMPEG制作一个批处理文件转换器

我在尝试从文件的完整链接中减去文件名以获取其所在文件夹的目录时遇到了一个问题,因此在转换文件后,可以将其放入该目录中

有人能告诉我如何从
目录中的字符串中减去
文件名
变量中的字符串吗

我的代码:

@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关闭
setLocalEnableExtensions
设置“TreeRoot=”
设置“FileGlob=*.flac”
设置“convxtn=.wav”
对于/F“Delims=”%%G In(
““(设置PATHEXT=)”和“%\uuuuuAppDir\uuuu%where.exe”/F/R“%TreeBase%”“%FileGlob%”2>NUL”
)做(
回显将%%~G转换为%%~nG%convxtn%
“ffmpeg.exe”-i%%G%%~dpnG%convxtn%”
如果不是错误,则完成1级回波转换。
)
“%\uuuu APPDIR\uuuuu%timeout.exe”/T 5 1>NUL

只需根据需要将第
3
行上的变量值调整为
5
。我使用了
作为树根,因为它是当前目录。但是,请注意,您的代码没有定义当前目录,因此如果此目录应该在批处理文件本身的位置上根目录,您可能应该将其更改为
%~dp0。

阅读
for/?
关于变量修饰符的输出。您尝试的方法完全没有必要。