[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求助批处理如何用for命令删掉除了最前,最后的其余文件?

本帖最后由 smatenchen 于 2022-6-2 16:16 编辑



求助——如何用for命令删掉除了最前,或者最后的其余文件?


求助


各位大神:


假定d:\下有n个文件,如何用for命令删掉,


1
除了最前2个之外的其余的文件?


2
或者,除了最后2个之外的其余的文件?


在线等,感谢!

回复 1# smatenchen


    最前、最后是按照什么排序的呢?文件名?修改时间?大小?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果是按文件名排序,而其中有涉及到数字序号,有时顺序可能与你所看到会有较大的差异。

TOP

本帖最后由 smatenchen 于 2022-6-2 16:17 编辑

回复 2# Batcher


大神们好,


文件排序不是最重要的,都是会用到dir命令去显示排序结果。


鄙人最在意的是,如何保留了所需,而又剔除了其余……。


这是挺重要的操作,如,有一大堆记录文件,只需保留最前,或者最后几个,其余要删掉。


这要如何实现呢?是要多重用到set命令吗?


请大神们帮助!

TOP

本帖最后由 smatenchen 于 2022-6-2 16:17 编辑

回复 3# qixiaobin0715


大神们好,


文件排序不是最重要的,都是会用到dir命令去显示排序结果。


鄙人最在意的是,如何保留了所需,而又剔除了其余……。


这是挺重要的操作,如,有一大堆记录文件,只需保留最前,或者最后几个,其余要删掉。


这要如何实现呢?是要多重用到set命令吗?


请大神们帮助!

TOP

本帖最后由 smatenchen 于 2022-6-2 16:18 编辑

大神们好,

文件排序不是最重要的,都是会用到dir命令去显示排序结果。

鄙人最在意的是,如何保留了所需,而又剔除了其余……。

这是挺重要的操作,如,有一大堆记录文件,只需保留最前,或者最后几个,其余要删掉。

这要如何实现呢?是要多重用到set命令吗?

请大神们帮助!

TOP

帖个图给大佬们看,他们才知道你的dir是什么样子的。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

本帖最后由 smatenchen 于 2022-6-2 16:18 编辑



没人会解法吗?

TOP

本帖最后由 smatenchen 于 2022-6-2 16:18 编辑

回复 7# xczxczxcz


   一般的dir命令,如dir /b /a:-d这样的命令。

TOP

本帖最后由 smatenchen 于 2022-6-2 16:18 编辑



1
先感谢大神出手相助。


2
的确,鄙人有没把需求说清楚的地方。
在一些地方,少说了或者两字,以致于把条件或,含混地说成了条件与。
是鄙人,说的不周圆。是鄙人的错。


3
大神批命令里的,
>1.log应不妥,该是>>1.log吧?
setlocal enabledelayedexpansion,没用到延迟,这句可不用吧?
(for /f,为何前面加个(呢?,这是要与>1.log配套使用的吗?
加了(,就等于>>1.log吗?就是将for命令的结果整个地输入给1.log吗?
这么多窍门吗?鄙人,又学几招了。哈哈!感谢!


4
非常感谢大神,给了提示。
sort命令也用上了,巧妙啊!谢谢!
鄙人之前忽略了skip参数,过去没理解透它。谢谢大神的提示。
鄙人,因而,有解法思路了。


5
看完大神的这个批命令,鄙人觉得,应该是会把所有txt文件删光吧?
这应该不能实现删掉除了最前2个,以及最后2个之外的其余文件吧?


6
假如,要删掉a.log文件里,除了最前2行,或最后2行外的其余行,这要如何实现呢?
有对文本内容编辑的命令吗?
假如,条件变一下,要删掉除了最前2行,及最后2行外的其余行,又该如何实现呢?
求帮助!谢谢!

TOP

假定最前文件叫张三 最后文件叫李四
  1. @Echo off
  2. for /r %%i in (*)do if not "%%~nxi"=="%~nx0" if not "%%~nxi"=="张三.txt" if not "%%~nxi"=="李四.png" del/s/q "%%i"
  3. pause
复制代码

TOP

假定按名称排列
  1. @Echo off&SetLocal EnableDelayedExpansion&set n=0
  2. for /r %%i in (*)do (
  3. if not "%%~nxi"=="%~nx0" (set /a n+=1
  4. if "!n!"=="1" set L=%%i
  5. set J=%%i
  6. )
  7. )
  8. for /r %%i in (*)do if not "%%~nxi"=="%~nx0" if not "%%i"=="!L!" if not "%%i"=="!J!" del/s/q "%%i"
  9. pause
复制代码

TOP

回复 2# Batcher


   论坛有点问题发不了新贴了,分类无论选什么点发新话题都提示:您没有输入标题或内容,请返回填写。
尝试过chrome和firefox都是。。

TOP

回复 12# smss


   1
大神,
可以解释一下你的for命令里,各条语句的具体含义吗?
鄙人实在是看不太懂。
谢谢!

TOP

回复 13# arwind


   

TOP

返回列表