永发信息网

如何写批处理根据TXT文件列表批量删除文件,文件列表里面的文件到处都是 不在同一个目录下

答案:2  悬赏:80  手机版
解决时间 2021-12-29 09:37
  • 提问者网友:十年饮冰
  • 2021-12-28 20:34
要删除的TXT文件名为k1.txt 文件较多
内容是:
备份_45274150389.mrk
45274150201.mrk
45274150102.mrk

45274150111.mrk
45274150125.mrk
备份_45274150365.mrk
备份_45274150294.mrk
备份_45274150265.mrk

备份_45274150224.mrk
备份_45274150219.mrk
45274150271.mrk
74150269.mrk
45274150265.mrk

274150264.mrk
45274150263.mrk
74150247.mrk

另外要保留的TXT是k2.txt 文件较少
45274150269.mrk
74150268.mrk
45274150265.mrk
474150264.mrk

两个方向都可以,从这两个TXT删除或者避免删除都可以只要能实现这些功能就好谢谢!

整个硬盘所有MRK 文件都在这里了,肯定的是C 盘有 子目录下也有 其他盘也会有 但没有那么多 文件都是同一类型 ,期待高手解决 。
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-12-28 20:48
是要删除K1.TXT中出现的MRK文件的同时保留K2.TXT中出现的MRK文件
@echo off
set "ext=.mrk"
set "s=%~dp0"
echo 正在搜索,请稍候...
for %%a in (C D E F G H I J K L M O P Q R S T U V W X Y Z) do (
if exist %%a:\nul (
pushd %%a:\
for /r %%b in ("*%ext%") do (
set delfile=
for /f "delims=" %%i in ('findstr /i "\<%%~nxb\>" %s%k2.txt') do set delfile=.
if not defined delfile echo del /a /f /q "%%b"
rem 这是测试,正式运行请删除上一行的echo
))
popd
)
pause&exit /b
全部回答
  • 1楼网友:轮獄道
  • 2021-12-28 21:55
你说的“空格空格空格9415”应该是“ 9415”(9415前有三个空格)吧。 @echo off setlocal enabledelayedexpansion set a=" 9415" call :sub %a% copy tmp.txt+2.txt 合并.txt /y>nul start 合并.txt del tmp.txt /f exit :sub for /f "tokens=1* delims=:" %%i in ('findstr /n ".*" 1.txt') do ( if "%%j"=="" (echo.>>tmp.txt) else ( set str=%%j >>tmp.txt echo !str:%~1=@9415! )) goto :eof 说明: 复制到记事本中,保存为.bat文件,把这个bat文件放到1.txt文件所在目录,运行。自动打开的就是合并后的文件。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯