BAT怎样批量删除文件夹中,除了txt后缀名文件外的其他文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BAT怎样批量删除文件夹中,除了txt后缀名文件外的其他文件相关的知识,希望对你有一定的参考价值。

参考技术A 曲线救国的办法

1。建一个临时文件夹
2。用move把.txt文件移到临时文件夹里
3。删除文件夹里的所有文件
4。把临时文件夹里的.txt文件再移回来
5。删除临时文件夹

OK了
参考技术B 在cmd中,输入del*.(要删除的文件扩展名)就可以了。 参考技术C ::-----------------------------------------
@echo
off
setlocal
EnableDelayedExpansion
set
_targetDir=C:\Users\ShiningWang\test
set
_thisFilePath=%0
:loop
for
/r
%_targetDir%
%%i
in
(*.*)
do
(
REM
文件全路径
set
_filePath=%%i
REM
不删除批处理本身
if
not
"!_filePath!"==%_thisFilePath%
(
REM
截取文件后缀
set
suffix=!_filePath:~-4!
REM
不删除".txt"后缀的文件
if
not
"!suffix!"==".txt"
(
del
/q
"%%i"
)
)
)
pause
::----------------------------------------------------------

用shell命令怎样批量删除文件的后缀名

有个前提是需要处理的文件不在同一个文件夹,在各个子文件夹中
find . -name "*.txt" -exec mv .bak \;
这样可以给所有txt文件后面添加后缀,把*.txt变成*.txt.bak,怎样才能去掉后缀,把*.txt直接变成*呢

1)要代码简洁、写成一行的话,可以考虑这样:

find . -name "*.txt" | awk 'new=gensub(".txt","",1);system("mv "$0" "new)'


用awk处理,gensub函数将.txt后缀替换为空并返回替换后的字串赋值给变量new,最后借用system调用执行mv命令更名文件。

 

2)要思路简单易于理解的话,可以这样:

for file in `find . -name "*.txt"`
do
    mv $file $file%.*
done

$file%.* 是bash中字符串处理“掐头去尾法”中的去尾法。

参考技术A

用basename命令

for i in `find . -name "*.txt"`
do
    mv $i `basename $i txt`bak
done

参考技术B

假设你要去掉的是 .txt 后缀 

rename ".txt" "" *

这个是把当前目录下所有文件名中含.txt的,将第一个遇见的.txt去掉。

妥善实验后使用。因为此命令会直接对你文件名进行操作。

以上是关于BAT怎样批量删除文件夹中,除了txt后缀名文件外的其他文件的主要内容,如果未能解决你的问题,请参考以下文章

用shell命令怎样批量删除文件的后缀名

怎样批量提取视频的文件名?

BAT-批量改文件后缀名

怎样批量改后缀名?

如何在DOS下批量改后缀名

**.bat中,怎样将多文件,按文件名的关键字批量移动到多相应的文件夹中?