检查特定的命名约定

Check for specific naming convention

我有一个目录,用户在其中保存他们的 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 我仍然想将它移至错误存档,因为它是一个不需要的文件名。您能为此提出解决方案吗?

将有效名称放入文本文件(即 "ValidNames.txt")并使用带有 /G 选项的 findstr。

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"