Batch file 将find命令放入批处理文件中

Batch file 将find命令放入批处理文件中,batch-file,Batch File,以下命令在CMD窗口中运行良好。它列出了包含单词“NOTE”但不包含“NOTES”的目录 dirc:\myfiles\mydirectories/s/b/ad |查找“NOTE”|查找“NOTES”/v 当我将命令放入批处理文件中时,CMD会抱怨无效开关-v dirc:\myfiles\mydirectories/s/b/ad^查找“NOTE”^查找“NOTES”/v 我做错了什么?谢谢 这是在Windows 7上。您是否: 在将其作为命令放入批处理文件时转义管道? 如果是这样的话,不要逃避管道

以下命令在CMD窗口中运行良好。它列出了包含单词“NOTE”但不包含“NOTES”的目录

dirc:\myfiles\mydirectories/s/b/ad |查找“NOTE”|查找“NOTES”/v

当我将命令放入批处理文件中时,CMD会抱怨
无效开关-v

dirc:\myfiles\mydirectories/s/b/ad^查找“NOTE”^查找“NOTES”/v

我做错了什么?谢谢

这是在Windows 7上。

您是否:

  • 在将其作为命令放入批处理文件时转义管道?
    如果是这样的话,不要逃避管道

    dir c:\myfiles\mydirectories /s /b /ad |find "NOTE" |find "NOTES" /v
    
  • 让搜索在子shell中调用?
    如果是,请在管道上保留转义字符。 我的意思是:

    for /f "delims=" %%a in ('dir c:\myfiles\mydirectories /s /b /ad ^|find "NOTE" ^|find "NOTES" /v') do echo Something
    
  • 是否将命令保存在一个批处理文件中,该批处理文件在子shell中调用?
    如果是,则放弃转义字符。 我的意思是:

    for/f“delims=“%%a in('call')执行回显操作
    
  • 如果上述任何一项都不适用,那么当此行是较大批处理文件的一部分时,是否会显示错误?如果是的话,你能完全分享吗

  • 你是:

  • 在将其作为命令放入批处理文件时转义管道?
    如果是这样的话,不要逃避管道

    dir c:\myfiles\mydirectories /s /b /ad |find "NOTE" |find "NOTES" /v
    
  • 让搜索在子shell中调用?
    如果是,请在管道上保留转义字符。 我的意思是:

    for /f "delims=" %%a in ('dir c:\myfiles\mydirectories /s /b /ad ^|find "NOTE" ^|find "NOTES" /v') do echo Something
    
  • 是否将命令保存在一个批处理文件中,该批处理文件在子shell中调用?
    如果是,则放弃转义字符。 我的意思是:

    for/f“delims=“%%a in('call')执行回显操作
    
  • 如果上述任何一项都不适用,那么当此行是较大批处理文件的一部分时,是否会显示错误?如果是的话,你能完全分享吗


  • 使用
    findstr
    您只需要一根管道:

    dir c:\myfiles\mydirectories /s /b /ad|findstr "\<NOTE\>"
    
    dirc:\myfiles\mydirectories/s/b/ad | findstr“\”
    
    或使用for循环:

    for /f "delims=" %%a in ('dir "c:\myfiles\mydirectories" /s /b /ad^|findstr "\<NOTE\>"') do echo %%~a
    
    对于/f“delims=”('dir“c:\myfiles\mydirectories”/s/b/ad^ findstr“\”)中的%%a,执行echo%%a
    
    \
    是单词结尾的正则表达式

    有关更多帮助,请参见
    help findstr

    使用
    findstr
    您只需要一根管道:

    dir c:\myfiles\mydirectories /s /b /ad|findstr "\<NOTE\>"
    
    dirc:\myfiles\mydirectories/s/b/ad | findstr“\”
    
    或使用for循环:

    for /f "delims=" %%a in ('dir "c:\myfiles\mydirectories" /s /b /ad^|findstr "\<NOTE\>"') do echo %%~a
    
    对于/f“delims=”('dir“c:\myfiles\mydirectories”/s/b/ad^ findstr“\”)中的%%a,执行echo%%a
    
    \
    是单词结尾的正则表达式
    有关更多帮助,请参见帮助查找TR