Batch file 将文件夹路径作为变量cmd传递

Batch file 将文件夹路径作为变量cmd传递,batch-file,cmd,Batch File,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 "token

我想扫描一个路径由用户输入定义的文件夹&最后应用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:\Trainers\out\outt\ /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:\Trainers\out\outt\!in!" 2>>info.txt
)
pause
上面的脚本放在包含ffprobe.exe的文件夹中&它成功地在同一目录中创建了两个txt文件 请注意,
d:\Trainers\out\outt\
是用于扫描媒体文件的目录,而不是执行此bat文件的目录 ffprobe的基本语法是

ffprobe "videofile"

使用与path不同的变量名

PATH
已经做了一些非常重要的事情。事实上,非常重要的是,你改变它正是脚本崩溃的原因


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

中指定的文件夹中。请使用与PATH不同的变量名

PATH
已经做了一些非常重要的事情。事实上,非常重要的是,你改变它正是脚本崩溃的原因


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

中指定的文件夹中。用户输入命令看起来像是错误的上下文。删除引号,它应该可以正常工作。不需要引号来分隔提示和用户输入。

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

Windows环境变量不区分大小写。不要使用%path%。除此之外,您确定该变量得到了您期望的值吗?Windows环境变量不区分大小写。不要使用%path%。除此之外,您确定变量得到了您期望的值吗?@nightcrawler:对于不应该使用的其他变量的列表,请调出命令提示符并发出命令
set
。哇!那里有很多信息硬件信息…非常有用。这些我不知道的无形命令:(你能给我推荐一本书吗?我知道很多关于Javascript和网络编码的知识,但不知道this@nightcrawler:对于不应该使用的其他变量的列表,请拉动命令提示符并发出命令
set
。哇!那里有很多信息硬件信息…非常有用。我不知道这些不可见的命令:(你能给我推荐一本书吗?我知道很多关于Javascript和网络编码的知识,但不知道这方面的知识