双响炮 发表于 2018-9-24 09:06:54

如何根据LIST.TXT列表保留文件夹的文件写个批处理

本帖最后由 双响炮 于 2018-9-24 09:15 编辑

想根据列表文件D:\LIST.TXT文件保留D:\XUNLEIVIP中相同文件名文件和不同后缀名的文件,删除后缀名相同但文件名不同的文件,写了个批处理执行不了,请大神们指点一下,网上看教程实在是弄不明白了。
::设置待处理目录
set SrcDir=D:\xunleivip

::设置列表文件
set LstFile=d:\list.txt

for /f "delims=" %%a in ('dir /a-d/s/b "%SrcDir%\*"') do (
    for /f "delims=" %%b in ('findstr /i"^%%~b$" "%LstFile%"' ) do (
         if not "%%~nxa"=="%%b (echodel /f /q "%%~a")
    )
   rd "%%~dpa"
)
echo end ...
pause

nttwqz 发表于 2018-9-26 13:36:01

双响炮 发表于 2018-9-26 09:47
回家就重装系统,昨天就怀疑了,再次感谢牛大的耐心指导!!!

好几次了,难道你都没有发现?|前面是需要有转义符号的

还有一种方法,文件属性法,给保留的文件添加只读隐藏系统属性,del命令默认无法删除这些属性的文件,然后再取消属性就可以了

窄口牛 发表于 2018-9-24 10:49:50

可能是我老了,理解力不够了。没看懂你的逻辑,大概猜的是:只留下单只后缀名的文件?


只留下一个文件?

双响炮 发表于 2018-9-24 14:06:28

可能我表达得不清楚,上图说明一下:

在文件夹xunleivip中要删除的是除了basecommunity.dll和downloadkernel.dll之外的所有后缀名为.dll的文件,其它文件和文件夹均保留

窄口牛 发表于 2018-9-24 14:40:36

本帖最后由 窄口牛 于 2018-9-24 14:43 编辑

@echo off
Setlocal enabledelayedexpansion
for /f %%a in ('dir D:\XUNLEIVIP\*.dll /a-d /b^|findstr /v "basecommuny.dll downloaderkernel.dll"') do (
echo del /q D:\XUNLEIVIP\%%a
)

Eisan 发表于 2018-9-24 18:40:24

这个要mark 学习一下。

双响炮 发表于 2018-9-24 20:09:38

窄口牛 发表于 2018-9-24 14:40


老大这个方法应该可行,可是如果我的LIST.TXT的文件很多就不适用了,是吧

nttwqz 发表于 2018-9-24 20:29:29

双响炮 发表于 2018-9-24 20:09
老大这个方法应该可行,可是如果我的LIST.TXT的文件很多就不适用了,是吧

尝试将findstr /v "basecommuny.dll downloaderkernel.dll" 改成

findstr /v /g:d:\list.txt

窄口牛 发表于 2018-9-24 21:14:17

可以的,findstr支持多字段。

双响炮 发表于 2018-9-24 21:14:41

nttwqz 发表于 2018-9-24 20:29
尝试将findstr /v "basecommuny.dll downloaderkernel.dll" 改成

findstr /v /g:d:\list.txt

不行,没任何反应

双响炮 发表于 2018-9-24 21:21:19

窄口牛 发表于 2018-9-24 21:14
可以的,findstr支持多字段。

我的意思是说不能把所有的保留文件都在批处理中列出来 呀,不然那个LIST.TXT文件就失去意义了
页: [1] 2 3
查看完整版本: 如何根据LIST.TXT列表保留文件夹的文件写个批处理