Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 &引用;C:\Users\root\Desktop\%I";将变量文件夹添加到命令_Batch File_Image_File_Video_Directory - Fatal编程技术网

Batch file &引用;C:\Users\root\Desktop\%I";将变量文件夹添加到命令

Batch file &引用;C:\Users\root\Desktop\%I";将变量文件夹添加到命令,batch-file,image,file,video,directory,Batch File,Image,File,Video,Directory,我用FrameShots软件创建了一个简单的程序,从多个视频文件中抓取图像 FOR /F %%I IN ('dir *.mp4 *.mkv /b /s') DO "C:\Program Files (x86)\FrameShots\frameshots.exe" -count 10 -filetype .jpeg "C:\Users\me\Videos\%%I" "C:\Users\me\Images" 从视频文件夹中的每个视频文件中抓取图像非常有效,但我无法让它访问视频文件夹子文件夹中的视频

我用FrameShots软件创建了一个简单的程序,从多个视频文件中抓取图像

FOR /F %%I IN ('dir *.mp4 *.mkv /b /s') DO "C:\Program Files (x86)\FrameShots\frameshots.exe" -count 10 -filetype .jpeg "C:\Users\me\Videos\%%I" "C:\Users\me\Images"
从视频文件夹中的每个视频文件中抓取图像非常有效,但我无法让它访问视频文件夹子文件夹中的视频(这是我认为
/s
应该实现的)

我希望在命令中添加
/s
可以强制帧快照不仅检查视频文件夹中的视频文件,还检查视频文件夹中其他文件夹(即假期文件夹、工作文件夹、孩子文件夹…)中的视频,但我错了

这是一个非常基本的bat文件:

FOR /F %%I IN ('dir *.mp4 *.mkv /b /s') DO "C:\Program Files (x86)\FrameShots\frameshots.exe" -count 10 -filetype .jpeg "C:\Users\me\Videos\%%I" "C:\Users\me\Images"

我原本希望从“Videos”文件夹中的每个视频(包括子文件夹)中获取10个jpeg图像,但我目前只从不在子文件夹中的mp4/mkv文件中获取图像,但我希望从“Videos”文件夹中的每个mp4/mkv文件(包括所有子文件夹)中获取图像。

看看这是否对您有用:

FOR /F "Tokens=*" %%I IN ('dir "%UserProfile%\*.mp4" "%UserProfile%\*.mkv" /b /s') DO "%ProgramFiles(x86)%\FrameShots\frameshots.exe" -count 10 -filetype .jpeg "%%I" "%USERPROFILE%\Images"
使用
DIR
with/S将递归子目录,但输出将是匹配文件的完整路径,而不是相对路径或文件名

因此,我们可以忽略您已经填写了某些文件路径的部分

此外,由于我知道您希望在用户配置文件下搜索,因此我改为使用Windows变量进行搜索,并使用它明确确保在正确的位置执行搜索,我还将其用于输出,以确保所有照片都在您的images文件夹中生成


因此,现在它将在安装了此程序的任何计算机上运行,而不仅仅是您的计算机。:)

看看这是否对你有用:

FOR /F "Tokens=*" %%I IN ('dir "%UserProfile%\*.mp4" "%UserProfile%\*.mkv" /b /s') DO "%ProgramFiles(x86)%\FrameShots\frameshots.exe" -count 10 -filetype .jpeg "%%I" "%USERPROFILE%\Images"
使用
DIR
with/S将递归子目录,但输出将是匹配文件的完整路径,而不是相对路径或文件名

因此,我们可以忽略您已经填写了某些文件路径的部分

此外,由于我知道您希望在用户配置文件下搜索,因此我改为使用Windows变量进行搜索,并使用它明确确保在正确的位置执行搜索,我还将其用于输出,以确保所有照片都在您的images文件夹中生成


因此,现在它将在安装了此程序的任何计算机上运行,而不仅仅是您的计算机。:)

如果要循环浏览目录中的所有文件(包括子文件夹)
for/r
是一种方法:

@echo off

set "dir=C:\Your\Video\Directory"
set "frame=C:\Program Files (x86)\FrameShots"
set "me=C:\Users\me"

for /r "%dir%" %%A in (*.mp4 *.mkv) do (
    "%frame%\frameshots.exe" -count 10 -filetype .jpeg "%%A" "%me%\Images"

)
我设置了比需要更多的变量,以使代码块更易于读取-如果您喜欢循环中的完整路径,可以设置更少/无<代码>for/r将循环浏览视频目录(
dir
)中的所有.mp4和.mkv文件,将每个文件设置为参数
%%A
,然后在
frameshots.exe
命令行中使用该参数。无需循环通过
dir的输出
required

我不熟悉帧快照,所以我只是根据您在问题中给出的示例以及我猜它们需要如何更正来使用我的语法-当循环迭代时,基本上这行代码将如下所示:

"C:\Program Files (x86)\FrameShots\frameshots.exe" -count 10 -filetype .jpeg C:\Full\Path\Of\Video\File.extension" "C:\Users\me\Images"

参考:

如果要循环浏览目录(包括子文件夹)中的所有文件,
for/r
是一种方法:

@echo off

set "dir=C:\Your\Video\Directory"
set "frame=C:\Program Files (x86)\FrameShots"
set "me=C:\Users\me"

for /r "%dir%" %%A in (*.mp4 *.mkv) do (
    "%frame%\frameshots.exe" -count 10 -filetype .jpeg "%%A" "%me%\Images"

)
我设置了比需要更多的变量,以使代码块更易于读取-如果您喜欢循环中的完整路径,可以设置更少/无<代码>for/r将循环浏览视频目录(
dir
)中的所有.mp4和.mkv文件,将每个文件设置为参数
%%A
,然后在
frameshots.exe
命令行中使用该参数。无需循环通过
dir的输出
required

我不熟悉帧快照,所以我只是根据您在问题中给出的示例以及我猜它们需要如何更正来使用我的语法-当循环迭代时,基本上这行代码将如下所示:

"C:\Program Files (x86)\FrameShots\frameshots.exe" -count 10 -filetype .jpeg C:\Full\Path\Of\Video\File.extension" "C:\Users\me\Images"

参考资料:

已解决,谢谢你,佩罗尼克先生!如果答案解决了您的问题,请单击旁边的绿色复选标记;通过阅读了解这一点的重要性;非常感谢。解决了,谢谢你,佩罗尼克先生!如果答案解决了您的问题,请单击旁边的绿色复选标记;通过阅读了解这一点的重要性;非常感谢。我只对您的脚本做了一些小改动,现在它对我来说非常适合:for/F“Tokens=*”%%I IN('dir*.mp4*.mkv/b/s')DO“C:\Program Files(x86)\FrameShots\FrameShots.exe”-count 10-filetype.jpg%%I“D:\Images”再次感谢您!我只对您的脚本做了一些小改动,现在它对我来说非常适合:for/F“Tokens=*”%%I IN('dir*.mp4*.mkv/b/s')DO“C:\Program Files(x86)\FrameShots\FrameShots.exe”-count 10-filetype.jpg%%I“D:\Images”再次感谢您!