检查特定的命名约定

时间:2019-04-01 14:21:56

标签: batch-file for-loop findstr

我有一个目录,用户在其中保存应遵循特定命名约定的excel文件:

XX-TestFile.xlsx

其中XX是可变数字,而-TestFile.xlsx应该始终相同且不变。如果目录中的文件符合特定的命名约定,我希望能够检查批处理作业。

如果文件名拼写错误,即XX-TetsFiel.xlsxXX不是02甚至不是XX-testfile.xlsx(全部小写)这样的数字,则文件应移至错误目录

我正在下面使用移动文件来实现此目的。我正在用11-testFiel.xlsx测试,效果很好。

@echo off

for /f "delims=" %%a in ('dir /b *.xlsx ^| findstr /v "[0-9][0-9]-TestFile.xlsx"') do move "%%a" "C:\Temp\Archive\Error"

但是,dir /b *.xlsx | findstr /v "[0-9][0-9]-TestFile.xlsx"允许109种可能的组合,因为XX是具有两位数字的变量,例如02。但是,我现在只想检查20个可能数字的特定文件名,例如02-TestFile.xlsx05-TestFile.xlsx10-TestFile.xlsx等。此列表是固定的...例如,如果文件名为99-TestFile.xlsx,我仍然希望将其移至错误档案,因为它是不需要的文件名。您可以为此提出建议吗?

1 个答案:

答案 0 :(得分:3)

将有效名称放入文本文件(即“ ValidNames.txt”),然后将findstr与/ G选项一起使用。

02-TestFile.xlsx
05-TestFile.xlsx
10-TestFile.xlsx
...

@echo off

for /f "delims=" %%a in ('
    dir /b *.xlsx ^| findstr /vxlg:"ValidNames.txt"
') do move "%%a" "C:\Temp\Archive\Error"