A. bat批处理TXT文件 批量删除小于5个字符的整行
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<# :
cls&echo off
rem 删除txt文本文件内字符数小于指定数量的行
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
set "newfolder=#result"
if not exist "%newfolder%" md "%newfolder%"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$maxcount=5;
$newfolder=get-item -liter $env:newfolder;
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$enc=[Text.Encoding]::GetEncoding('GB2312');
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
write-host $files[0].Name;
$arr=New-Object -TypeName System.Collections.ArrayList;
$text=[IO.File]::ReadAllLines($files[0].FullName,$enc);
for($j=0;$j -lt $text.count;$j++){
if($text[$j].length -le $maxcount){[void]$arr.add($text[$j]);}
}
$newfile=$newfolder.FullName+'\'+$files[0].Name;
[IO.File]::WriteAllLines($newfile,$arr,$enc);
}
B. 如何用bat批量去掉文件名的后缀
批量出除文件名中相同字符的方法:
步骤1,安装上面的软件后打开,点击【添加文件】按钮,将需要修改名称的文件全部添加到软件中,也可以通过将文件拖动到软件上的方式进行添加。
C. 笔记本电脑怎样批量删除文件
1、首先打开需要批量删除的文件夹。
2、在文件夹里面,右键-新建-文本文档。
3、打开文档把下图代码粘贴到里面,注意:wind:后面添加要批量删除的文件名字。
4、保存文本文档,然后修改txt格式为bat。
5、运行bat,删除成功。
D. 批处理BAT 批量删除TXT文本指定的行
@echo off
setlocal enabledelayedexpansion
for /l %%a in (1,1,1000) do (
set /a n=0
for /f %%i in (%%a.txt) do (
set /a n+=1
if /i !n!==3 set "var%%a=%%i"
)
)
for /l %%a in (1,1,1000) do (echo !var%%a!)
::1.txt中的第三行变量为:!var1!
::2.txt中的第三行变量为:!var2!
:: 。。。。。。。。。。。。。。
::1000.txt中的第三行变量为:!var1000!
::通配符的使用要看场合。
pause
E. 怎么用bat命令批量删除很多TXT文本中前3行和后3行
可以删除后三行的
@echo off&setlocal enabledelayedexpansionset TxtDir="D:\文档"echo 开始操作,请稍侯...cd /d %TxtDir%for /f "delims=" %%a in ('dir /a-d/b *.txt') do ( for /f "delims=" %%b in ('type "%%~a"') do set /a n+=1 set /a n=!n!-3 for /f "delims=" %%c in ('type "%%~a"') do ( if !n!==0 ( echo Processing....>nul ) else ( echo %%c>>"%%~a_New" set /a n-=1 ) ) if exist "%%~a_New" ( echo 文件:%%~a 处理完毕。 move "%%~a_New" "%%~a">nul ))echo.&echo 恭喜,所有文件处理完毕,请按任意键退出&pause>nul
F. 如何用bat批处理,批量删除文件夹里面指定大小以下的小文档 比如小于21kb的文档批量删除。
@echo off
rem 删除小于4字节的小txt文件(实际是空文件)
for /r %%F in (*) do if %%~zF LSS 21000 echo del "%%F">>list.txt
然后核对下list.txt里是不是你要删除的文件名称,如果是的话,把list.txt改成list.bat,双击执行删除,就搞定了。
上图是我刚用过的,删除小于4字节的文本文件的。
G. 用bat命令批量删除文件
@echo
off
::把你的文件保存为del.txt里,运行这个批处理就可以了
for
/f
"delims="
%%i
in
(del.txt)do
del
/q/f
"%%i"
H. 急急急求bat批处理:批量删除所有txt文档当中第二行以后的内容
搜 百宝箱,,,,V10.0
选择处理全文模式,勾选使用正则,在待替换内容中输入:(.+?[ ]).+,在替换新内容中输入:$1,单击新增入列表,最后单击执行。
I. 如图,如何使用批处理文件批量删除截图文件内的“_text”后缀
批量修改文件名方式如下:
1.复制以下代码到记事本。
@echo off
set /p w=请输入文件格式(即扩展名并以回车结束):
set /p wf=请输入要修改的文字(以回车结束):
set /p cb=请输入要改成的文字(若是删除则直接回车,以回车结束):
for /f "delims=" %%i in ('dir /b /a-d "*.%w%"' ) do (
set str1=%%i
setlocal EnableDelayedExpansion
set "str1=!str1:%wf%=%cb%!"
ren "%%i" "!str1!"
endlocal
)
pause
2.将记事本后缀改为.bat
编解码格式不匹配导致
解决办法:将其用记事本编辑,用另存为,然后将编码格式修改为ANSI(如下图↓)
J. 批处理或正则:怎么批量删除txt中指定字数以上的行
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<# :
cls&echo off
rem 删除多个txt文本文件内字符数超过指定数量的行
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
set "newfolder=#result"
if not exist "%newfolder%" md "%newfolder%"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$maxcount=100;
$newfolder=get-item -liter $env:newfolder;
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$enc=[Text.Encoding]::GetEncoding('GB2312');
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
write-host $files[0].Name;
$arr=New-Object -TypeName System.Collections.ArrayList;
$text=[IO.File]::ReadAllLines($files[0].FullName,$enc);
for($j=0;$j -lt $text.count;$j++){
if($text[$j].length -le $maxcount){[void]$arr.add($text[$j]);}
}
$newfile=$newfolder.FullName+'\'+$files[0].Name;
[IO.File]::WriteAllLines($newfile,$arr,$enc);
}