我试图写一个bat文件从一个目录,看起来像“R”串联了一些不确定的长度与.sas7bdat结局删除所有文件。使用通配符德尔法,排除特定文件
例如:r2343.sas7bdat,r2309483.sas7bdat等
的问题是,我也有一个名为 “ranker_interface.sas7bdat” 的文件,所以我不能只是做:
德尔“C:\ TEMP \ R * .sas7bdat”
我试着用搜索引擎这个上下,但我一直没能弄明白。有没有从通配符中排除特定值的方法?
我试图写一个bat文件从一个目录,看起来像“R”串联了一些不确定的长度与.sas7bdat结局删除所有文件。使用通配符德尔法,排除特定文件
例如:r2343.sas7bdat,r2309483.sas7bdat等
的问题是,我也有一个名为 “ranker_interface.sas7bdat” 的文件,所以我不能只是做:
德尔“C:\ TEMP \ R * .sas7bdat”
我试着用搜索引擎这个上下,但我一直没能弄明白。有没有从通配符中排除特定值的方法?
for /L %%a in (0,1,9) do ECHO del r%%a*.sas7bdat
可能是最简单的。
所需DEL命令仅仅是ECHO
编用于测试目的。 您已经验证后,该命令是正确的,改变ECHO DEL
到DEL
实际删除文件。
如果您直接从提示符而不是批处理文件中的行运行此操作,请将所有%%a
更改为%a
。
要列出下来从文件夹中有像“R * .sas7bdat”的所有文件,排除列表称为ranker_interface.sas7bdat的一个,并删除其余可以从批处理文件中使用此命令:
for /f "tokens=*" %%a in ('dir /b r*.sas7bdat ^| find /v "ranker_interface.sas7bdat"') do del /f /q %%a
它被写入直接从文件夹执行的方式。 这将删除所有“R * .sas7bdat”,但一个由find /v
规定 - 排除,可最终再接再find /v
排斥,所以像:
for /f "tokens=*" %%a in ('dir /b r*.sas7bdat ^| find /v "ranker_interface.sas7bdat" ^| find /v "rxxxxx.sas7bdat"') do del /f /q %%a
若您要排除的最佳途径多个文件。如果要排除多个文件,然后你可以把你排除的文件名到直接运行辛格运河文件和isntead del
命令进一步for
其次if
语句可以做到和比较该文件,如果能排除列表中的文件被发现,包含每一行的文件名称。批处理可以是这样的,那么:
@echo off
for /f "tokens=*" %%a in ('dir /b r*.sas7bdat') do (
for /f "tokens=*" %%x in ('type exclusion.txt ^| find /c "%%a"') do (
if "%%x" EQU "0" (del /f /q %%a)
)
)
这将删除你的目录是像“R * .sas7bdat”的所有文件,除了那些在文件“exclusion.txt”
希望降低上市这会有所帮助
这是解决这个得到的老同学MSDOS方式:
attrib +h "C:\temp\ranker*.sas7bdat"
del "C:\temp\r*.sas7bdat"
attrib -h "C:\temp\ranker*.sas7bdat"
ATTRIB命令隐藏你不想从DEL命令删除的文件,
然后再取消隐藏它们。
谢谢,我试过这个,它工作,但我要使用上面从Magoo的答案。 – user3430745
感谢这就是我要使用。 – user3430745