将文件夹路径作为变量CMD



我想扫描一个文件夹,其路径由用户输入&最后,应用FFMPEG将所有媒体文件信息存储到文本文件中。以下代码不起作用

@echo off
setLocal EnableDelayedExpansion
set /P "path=Enter folder path: "
dir %path% /B /O:N | findstr ".wmv$ .mpg$ .mkv$ .mpeg$ .mp4$ .avi$" >filename.txt
echo. >info.txt
for /f "tokens=* delims= " %%a in ('type filename.txt') do (
set in=%in%%%a
ffprobe "%path%!in!" 2>>info.txt
)
pause

但是,如果我按以下方式剥离用户输入?

@echo off
setLocal EnableDelayedExpansion
::set /P "path=Enter folder path: "
dir d:Trainersoutoutt /B /O:N | findstr ".wmv$ .mpg$ .mkv$ .mpeg$ .mp4$ .avi$" >filename.txt
echo. >info.txt
for /f "tokens=* delims= " %%a in ('type filename.txt') do (
set in=%in%%%a
ffprobe "d:Trainersoutoutt!in!" 2>>info.txt
)
pause

上面的脚本放置在包含ffprobe.exe&的文件夹中。它成功地在同一目录中创建了两个TXT文件请注意,d:Trainersoutoutt是扫描媒体文件的目录&不是执行此BAT文件的目录FFProbe的基本语法是

ffprobe "videofile"

使用与路径不同的变量名称。

PATH已经做了非常重要的事情。实际上,如此重要的是,您的改变正是脚本打破的原因。

更具体地说,当您尝试仅使用文件名执行程序(根本没有路径)时,如果在工作目录中找不到程序时,搜索了PATH环境变量的内容。我还没有看到您收到的错误消息,但是它可能无法执行Findstr,这是一个可执行的可执行文件,通常在PATH中指定的文件夹中找到。

用户输入命令看起来像是错误的上下文。放下报价,它应该正常工作。不需要引号将您的提示与用户输入分开。

最新更新