Windows 7中的批处理文件,用于查找与模式

时间:2015-05-20 05:22:24

标签: regex batch-file command-line

希望你能帮助我。我需要编写一个小批处理文件,可以放在用户的PC上(不是一个非常注重计算机的人)来检查文件夹(从服务器共享)并列出该文件夹中与文件模式不匹配的文件。我有一个每晚运行的应用程序,但文件必须命名为*_*_*.*如果它不是这种格式的应用程序失败,即使应用程序会给出一些指示哪个文件不正确,浪费了一天,如果再次弄错了......另一天。他们需要能够运行这个简单的批处理文件,它只能在屏幕上显示错误命名的文件。

我开始阅读有关forFiles功能的内容,但是还没有能够弄清楚如何正确使用它。另外,我能直接引用此共享文件夹吗?现在,如果我们访问它,它看起来像这样:\ dhpServer1 \ PeopleFolder。这里是应该检查的文件。

非常感谢

2 个答案:

答案 0 :(得分:1)

您可以生成完整的文件列表,并过滤那些与所需模式不匹配的文件。

dir /b /a-d "\\dhpServer1\PeopleFolder\*" | findstr /v /r /c:"^[^_][^_]*_[^_][^_]*_.*"

findstr将过滤dir命令的输出,显示与正常表达(/v)不匹配(/r)的行({{ 1}}):

/c:

可能需要调整表达式。这个表达式只是我的解释(当然我可能是错的)你所写的^ at the start of the line [^_] a non underscore character [^_]* followed by zero or more non underscore characters _ followed by an underscore [^_] followed by a non underscore character [^_]* followed by zero or more non underscore characters _ followed by an underscore .* followed by any sequence of zero or more characters ,但与*_*_*.*中通配符的行为不匹配命令。 dir更接近指示的通配符表达式的行为。

答案 1 :(得分:1)

@Override
public String toString()
{
    return WordPuzzleGenerator.toString (puzzleListX,puzzleListY);
}

您需要更改Router.route('/settings', { name: 'settings', data: function() { return Settings.findOne({userId: Meteor.user()._id}); } }); 的设置以适合您的具体情况。

以下是示例输出:

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
SET "errorfound="
FOR /f "delims=" %%a IN (
  'dir /b /a-d "%sourcedir%\*" '
  ) DO (
 SET "error="
 FOR /f "tokens=1-3*delims=_" %%p IN ("q%%a") DO (
  IF "%%p" equ "q" SET error=Y
  IF "%%s" neq ""  SET error=Y
  IF "%%r" equ ""  SET error=Y
  IF NOT DEFINED error (
   FOR /f "tokens=1,2*delims=." %%x IN ("q%%r") DO (
    IF "%%x" equ "q" SET error=Y
    IF "%%y" equ ""  SET error=Y
    IF "%%z" neq ""  SET error=Y
   )
  )
  IF DEFINED error (
   ECHO %%a is invalid FORMAT
   SET errorfound=y
  ) ELSE (ECHO %%a is OK)
 )
)
IF DEFINED errorfound (
 ECHO error found
 PAUSE
) ELSE (
 ECHO All OK!
 timeout /t 5 >nul
)
GOTO :EOF

如果所有文件都是有效格式,则该过程应显示apprpriate消息5秒钟并终止。

原则是在sourcedira_valid_file.name is OK _invalid_file.namestartingunderscore is invalid FORMAT an_invalid_file_name.toomanyundescores is invalid FORMAT invalid_file.nameinsufficientunderscores is invalid FORMAT an_invalid_.filenameterminalunderscoreinname is invalid FORMAT an_extra_invalid_.filenameterminalunderscoreinname is invalid FORMAT an_invalid_filenamewithnoextension is invalid FORMAT an_invalid_filenamewith.multiple.extensions is invalid FORMAT error found Press any key to continue . . . 用作分隔符并利用_特征来切换是否发生错误时,通过标记来评估名称的单独部分逐个实例。