我有一个DOS批处理文件,它对以文本“SP”开头的文件执行操作,如下所示:
FOR /F "tokens=*" %%A IN ( 'DIR SP*.sql /s /b' ) DO ECHO .compile_file = "%%A" >> output.txt
这里的关键点显然是:
DIR SP*.sql /s /b
我需要在上面的“FOR”行之前做类似的事情,但对于所有其他不以SP * .sql开头的文件
类似的东西:
FOR /F "tokens=*" %%A IN ( 'DIR [^SP]*.sql /s /b' ) DO ECHO .run_file = "%%A" >> output.txt
FOR /F "tokens=*" %%A IN ( 'DIR SP*.sql /s /b' ) DO ECHO .compile_file = "%%A" >> output.txt
有谁知道我怎么做到这一点? 我可以使用正则表达式吗?
批处理文件将在Windows XP中的CMD下运行。
干杯
答案 0 :(得分:1)
批处理时,通常可以findstr
使用/V
来取消正则表达式,例如
.... | findstr /V "^SPL"
尝试将文件名传递给findstr
,看看它是怎么回事
%~nI - expands %I to a file name only