如何使用FOR在文件中查找字符串,删除空格,为其设置变量以进行标记?

时间:2018-01-05 08:42:54

标签: batch-file

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,但这次我想不通。任何帮助将不胜感激。

3 个答案:

答案 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