bat或者vbs删除某字符串之前之后的字符

删除年月日格式:2014年01月06日
2016-11-23
xx楼 2016.11.23

每行前后的字符,但“xx楼”保留。如某行:举报 a 于 2016-11-23 23:12:56的发奋。处理后行:2016-11-23

第1个回答  2020-08-13
不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行
<# :
cls
@echo off
rem 将一个txt文本文件内指定特征字符串前后/左右/两边的同行内容删除
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$regstr='\d{4}年\d{2}月\d{2}|\d{4}-\d{2}-\d{2}|\d{4}\.\d{2}\.\d{2}';

$path=$args[0];$newfolder=$path+'#result';
if(-not (test-path -liter $newfolder)){[void](md $newfolder -force);};
$enc=[Text.Encoding]::Default;
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
write-host $files[0].Name;
[System.Collections.ArrayList]$s=@();
$text=[IO.File]::ReadAllLines($files[0].FullName, $enc);
for($i=0;$i -lt $text.count;$i++){
$m=[regex]::match($text[$i], $regstr);
if($m.Success){
$index=$text[$i].IndexOf($m.groups[0].value);
if($text[$i].substring(0,$index).Contains('楼')){
[void]$s.add($text[$i].substring(0,$index+$m.groups[0].value.length));
}else{
[void]$s.add($m.groups[0].value);
};
}else{
[void]$s.add($text[$i]);
};
};
$newfile=$newfolder+'\'+$files[0].Name;
[IO.File]::WriteAllLines($newfile, $s, $enc);
};
第2个回答  2018-03-01
@echo off & title 一键删除两天前数据行 By 依梦琴瑶cd /d %~dp0setlocal enabledelayedexpansion set File=D:\test.txt echo wscript.echo DatePart("yyyy",DateAdd("d",-2,date)) ^& Right("0" ^& DatePart("m",DateAdd("d",-2,date)),2) ^& Right("0" ^& DatePart("d",DateAdd("d",-2,date)),2)>getBefore.vbsfor /f "delims=" %%a in ('cscript /nologo getBefore.vbs') do set Before=%%adel getBefore.vbs(for /f "delims=" %%a in ('type "%File%"') do ( echo %%~a|findstr "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]$" >nul && ( for /f "tokens=1-3 delims=- " %%b in ("%%~a") do ( if "%%~b%%~c%%~d" lss "%Before%" ( set Del=1 ) else ( set Del=0 ) ) ) if !Del! equ 0 echo %%~a))>New_File.txtmove /y New_File.txt "%File%">nulpause追问

你这个是谁写的啊?对不上号哦

bat或者vbs删除某字符串之前之后的字符
不清楚你的实际文件\/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行 <# :cls echo off rem 将一个txt文本文件内指定特征字符串前后\/左右\/两边的同行内容删除 set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4 t...

bat 批处理 删除之前和之后行
"scripting.filesystemobject")set regex=new regexpfile="1.txt"read=fso.opentextfile(file).readallwith RegEx.Global=1:.multiline=1.Pattern="555([\\w\\W]+)\\s\\d+ 355"set matches=.execute(read)for each match in Matcheswsh.echo match.submatches(0)nextend with保存为vbs文件 ...

求一段ASP代码可以删除指定字符之前或者之后的内容!
如果字符固定的话,写一个循环,先读取出数据库所有的记录值,然后一条一条的更新,把字段内容读取出来,只要字符固定不重复,用数组分割split,保留需要的部分,重新连接成字符串,更新字段即可。另外可以用instr不知道是不是这个函数哈,忘记了,有个函数可以返回某个字符在字符串中的位置,然后用left和...

想要使用bat来删除某指定文件夹内的,指定天数以前的文件。
如果每天一个文件的话,删除30天前的文件为例,可以用下面的方法 echo off pushd d:\\指定文件夹 set n=30 for \/f "skip=%n% tokens=*" %%i in ('dir\/b\/o-d') do del "%%i"如果每天文件多于一个的话,需借助vbs来实现。用bat本身判断日期的有效性有点复杂。

急急急求bat批处理:批量删除所有txt文档当中第二行以后的内容
,,,V10.0 选择 批替换功能卡,选择txt类型或者Doc\/txt类型,这里选择txt类型。选择行处理,选择删除模式,选择顺数从第3行到第0行,其中0代表末行 或者:选择处理全文模式,勾选使用正则,在待替换内容中输入:(.+?[\\r\\n]).+,在替换新内容中输入:$1,单击新增入列表,最后单击执行。

删除指定目录下N天前的文件bat文件。并且能在windows server 2008下能...
::本例调用了临时VBS代码进行日期计算 ::本例为兼容不同的日期格式,调用reg命令(XP系统自带)统一设置日期格式,::处理完毕之后再把日期格式恢复成原来的状态。rem 指定待删除文件的存放路径 set SrcDir=C:\\Test\\BatHome rem 指定天数 set DaysAgo=1 for \/f "delims=" %%a in ('reg query "...

vbs如何制作一个能删除某文件夹内带“.tmp”关键字的文件夹?
要简洁就直接用bat批处理文件来处理文件对象了,用vbs还得考虑运行权限和版本问题岂不是扯。

用vbs删除某文件夹下的所有文件怎么写?
可以使用批处理简单 echo off for \/d %%i in(*) do rmdir \/s \/q "%%i"保存成bat后缀名的文件,你试试。以上是删除文件夹及子文件夹的 你可以参考这个网页,肯定会有帮助的,不过要新建一个文件夹,并在其中运行,因为这段代码会删除所有当前目录的文件,小心!http:\/\/zhidao.baidu.com\/...

VBS 怎么判断4个数中,有三个一样,或是有两个一样,或是各不相同?
在VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫"浮点数"), 也不用考虑是不是字符串(一串字符, 比如:"Hello World"), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变, 但我强烈反对这么做, 一个变量的基本原则就是:先声明,后使用.变量名用字母开头,可以使用下划线,数字, 但不能...

如何用批处理命令运行组合键
有效标号:冒号后紧跟一个以字母数字开头的字符串,goto 语句可以识别。无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto 无法识别的标号,可以起到注释作用,所以 :: 常被用作注释符号,其实 :+ 也可起注释作用。第二, 与rem 不同的是,:: 后的字符行在执行时不会回显,不论是否用 echo on 打开命令行...

相似回答