public class VideoEditorPresenter implements VideoEditorContract.Presenter {
private final VideoEditorContract.View mVideoEditorView;
@NonNull
private String mVideoPath;
public VideoEditorPresenter(@NonNull String videoPath, @NonNull VideoEditorContract.View videoEditorView) {
mVideoPath = checkNotNull(videoPath);
mVideoEditorView = checkNotNull(videoEditorView, "videoEditorView cannot be null!");
mVideoEditorView.setPresenter(this);
//trimVideo(); //should I do it here since this task is only need to be done once
}
@Override
public void start() {
//trimVideo(); //I can do it here but then I need to introduce a control variable; not sure if this is the best practice
}
private void trimVideo() {
//trim video stuff
}
// Currently it doesn't have a stop() method. But if it have one,
// what should I put in it? Releasing and clean up the
// VideoUtility I suppose?
}
无论是WITH还是WITHOUT“setlocal EnableDelayedExpansion”,批处理文件都无法正常工作。
但到目前为止,这就是我所拥有的一切。但是,我还想从FINDSTR字符串中去除前面的字符,但是将变量设置为FINDSTR字符串AND IT'S SUCCEEDING 123123字符。不幸的是,它不起作用。它只输出“ECHO关闭。”
我在其他方面正确使用过FOR,但这次我想不通。任何帮助将不胜感激。
答案 0 :(得分:3)
了解第一个含义
Tokens
表示仅接受标准输出的第1列或第2列或......
skip
表示从标准输出文本列表中跳过第1,2 ...........行
delims
表示此列以什么方式(空格,点或斜线..........)彼此分隔的方式
答案 1 :(得分:1)
要获得最后一个单词,请使用普通for
按默认分隔符(空格,制表符,逗号,=)拆分字符串。不需要知道,有多少令牌。以下工作,即使有更多行YES
:
for /f "delims=" %%a in ('findstr "YES" .\testing.txt') do (
for %%b in (%%a) do set final=%%b
echo !final!
)
编辑查找YES
直到行尾:
有一个令牌*
用于"所有其余的",所以你可以这样做:
for /f "tokens=3,* delims= " %%a in ('findstr "YES" .\testing.txt') do echo %%b
但我建议使用其他方法(仅用*YES
替换YES
)。 set
可以进行有限的通配符替换(*string
有效,但string*
不可用)。优点:您不需要知道哪个令牌YES...
是:
for /f "delims=" %%a in ('findstr "YES" testing.txt') do (
set line=%%a
echo !line:* YES=YES!
)
答案 2 :(得分:0)
好的,我明白了。不得不使用"令牌= 1,2,3,4,delim ="我厌恶使用的东西,它令人困惑,但之前已将它用于其他目的。我真的很困惑如何在命令结束时回显或设置变量到令牌。这是更正后的代码。
FOR /F "tokens=1,2,3,4 delims= " %%a in ('findstr "YES" .\testing.txt') do echo %%d