我有一个目录,用户在其中保存应遵循特定命名约定的excel文件:
XX-TestFile.xlsx
其中XX
是可变数字,而-TestFile.xlsx
应该始终相同且不变。如果目录中的文件符合特定的命名约定,我希望能够检查批处理作业。
如果文件名拼写错误,即XX-TetsFiel.xlsx
,XX
不是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.xlsx
,05-TestFile.xlsx
,10-TestFile.xlsx
等。此列表是固定的...例如,如果文件名为99-TestFile.xlsx
,我仍然希望将其移至错误档案,因为它是不需要的文件名。您可以为此提出建议吗?
答案 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"