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

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

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



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


求助


各位大神:


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


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


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


在线等,感谢!

本帖最后由 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

本帖最后由 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

回复 12# smss


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

TOP

回复 13# arwind


   

TOP

回复 11# smss


   1
先感谢大神出手相助。


2
请教,
%%~nxi,这是一种什么变量?请详教一下。


3
条件,
假定某文件夹里有一大堆文件,不知道其文件数量和文件名,因为这个文件夹里的文件
是会每天增加的,新文件名也是会不断依序出现的。
所以,用去比较文件名的解法,是行不通的。

TOP

回复 20# Batcher



1
感谢坛主出手相教!
谢谢!

TOP

回复 19# qixiaobin0715


1
感谢大神出手相教!
鄙人后来也想出了这个解法,现已测试,可用了。
谢谢!

TOP

回复 18# qixiaobin0715



1
大神好!感谢!


2
你之前的那个代码,
第1个for命令,把第3到第10个txt文件名存入1.log里。
第2个for命令,把第8到第1个txt文件名存入2.log里。
第3个for命令,用1.log里的行分别查找2.log里的行,取了交集,再交给%%i,去do,去del。
之前,是鄙人理解错误了!


3
只排除最前2个,或最后2个而删其它文件的解法,鄙人已有了。
感谢提示。


4
type命令输出的结果,可以用管道给其它命令做输入吗?


5
用for /f命令,可以做到,只读取第n行,而忽略其它行吗?

TOP

回复 12# smss Batcher qixiaobin0715



1
感谢大神!


2
if not "%%~nxi"=="%~nx0" (set /a n+=1
if "!n!"=="1" set L=%%i
set J=%%i
这句是什么意思?
若列举的第一个文件不是批处理文件本身,就开始计数。
第一个非批处理文件本身的要处理的文件,交给变量L,接着又交给变量J。这里是省了else吗?
没看懂其中的逻辑,能解释一下吗?


3
第2个for命令,不是!L!,不是!J!,就del?
没看懂其中的逻辑,能解释一下吗?


4
其他大神,有看懂了的吗?能帮忙解释一下吗?

TOP

回复 18# qixiaobin0715



1
感谢大神!

TOP

返回列表