标题: [文本处理] BAT如何批量将文本标题以符号为分割随机插入到txt文本内容中? [打印本页]
作者: yong8723 时间: 2019-4-23 21:48 标题: BAT如何批量将文本标题以符号为分割随机插入到txt文本内容中?
文件夹有n个txt文本
测试1,文本.txt
测试2,文本.txt
。。。。。。
实现效果样式
测试1,文本.txt内容
西宁号驱逐舰属于我国自主研制的052D型导弹驱逐舰之一,技战术测试1内容指标世界先进。此外,去年4月我国的南海大阅兵中,习近平检阅海军所用的检阅舰为长沙舰,同样也文本是052D型导弹驱逐舰。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
测试1,文本.txt内容
西宁号驱逐舰属于我国自主研制的052D型导弹驱逐舰之一,技战术测试2内容指标世界先进。此外,去年4月我国的南海大阅兵中,习近平检阅海军所用文本的检阅舰为长沙舰,同样也是052D型导弹驱逐舰。
随机插入位置不用考虑,每次个文本随机插入2次(次数可调)
作者: zaqmlp 时间: 2019-4-23 23:21
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
- set "次数=2"
- set "output=结果"
- md "%output%" 2>nul
- powershell ^
- dir *.txt^|?{$_ -is [System.IO.FileInfo]}^|%%{^
- write-host $_.Name;^
- $arr=$_.BaseName.split(',');^
- $text=[IO.File]::ReadAllText($_.FullName, [Text.Encoding]::Default);^
- [System.Collections.ArrayList]$char=$text.toCharArray();^
- for($i=0;$i -lt %次数%;$i++){^
- $n=0;while($n -lt $arr.Count){^
- $r=get-random @(0..($text.length-1));^
- if(($r -eq 0) -or ((@(\"`r\",\"`n\") -notcontains $char[$r]) -and (@(\"`r\",\"`n\") -notcontains $char[$r-1]))){^
- $char[$r]+=$arr[$n];^
- $n++;^
- };^
- };^
- };^
- out-file -file ('%output%\'+$_.Name) -input ($char -join '') -enc Default;^
- }
- echo;%info%
- pause
复制代码
作者: yong8723 时间: 2019-4-24 14:25
回复 2# zaqmlp
好的,我试试,可以的话发个小红包感谢
作者: yong8723 时间: 2019-4-24 14:31
回复 2# zaqmlp
不行哦,只是生成个结果文件夹,里面没有内容
作者: zaqmlp 时间: 2019-4-24 15:30
本帖最后由 zaqmlp 于 2019-4-24 15:32 编辑
回复 4# yong8723
bat跟txt放一起运行,无法得知你的实际情况,加我Q
作者: Batcher 时间: 2019-4-24 15:31
- @echo off
- setlocal enabledelayedexpansion
- set "folder=结果"
- if not exist "%folder%" (
- md "%folder%"
- )
- set interval=5
- for %%a in (*.txt) do (
- for /f "tokens=1-2 delims=," %%b in ("%%~na") do (
- set "ins1=%%b"
- set "ins2=%%c"
- )
- set /p line=<"%%a"
- call :StrLen !line!
- call :RandGen offset1
- set /a offset2=offset1+interval
- call :StrInsert !offset1! %interval% !offset2! > "%folder%\%%a"
- )
- goto :eof
-
- :StrLen
- set StrMAX=100
- for /l %%i in (0,1,%StrMAX%) do if "!line:~%%i,1!"=="" set num=%%i&goto :eof
-
- :RandGen
- set /a %1=%random%%%!num!
- goto :eof
-
- :StrInsert
- echo !line:~0,%1!!ins1!!line:~%1,%2!!ins2!!line:~%3!
- goto :eof
复制代码
作者: yong8723 时间: 2019-4-24 16:47
回复 5# zaqmlp
比如:txt文本:111,2222,3333.txt ;文件名:111,2222,3333
随机把111,2222,3333分开插入到txt文本里面,不用删除里面原本的内容,第个数据插入2次(次数可以调)
作者: yong8723 时间: 2019-4-24 16:51
回复 6# Batcher
这个只能插入一次,还有一个问题,这个脚本把第一段落以后的内容全部删除了
作者: yong8723 时间: 2019-4-24 16:51
回复 5# zaqmlp
我已经加你qq了
作者: yong8723 时间: 2019-4-24 16:59
回复 5# zaqmlp
作者: Batcher 时间: 2019-4-24 17:10
回复 8# yong8723
修复_第一段落以后的内容全部删除了.bat- @echo off
- setlocal enabledelayedexpansion
- set "folder=结果"
- if not exist "%folder%" (
- md "%folder%"
- )
- set interval=5
- for %%a in (*.txt) do (
- for /f "tokens=1-2 delims=," %%b in ("%%~na") do (
- set "ins1=%%b"
- set "ins2=%%c"
- )
- set /p line=<"%%a"
- call :StrLen !line!
- call :RandGen offset1
- set /a offset2=offset1+interval
- call :StrInsert !offset1! %interval% !offset2! > "%folder%\%%a"
- (for /f "skip=1" %%b in ('type "%%a"') do (
- echo,%%b
- ))>>"%folder%\%%a"
- )
- goto :eof
-
- :StrLen
- set StrMAX=100
- for /l %%i in (0,1,%StrMAX%) do if "!line:~%%i,1!"=="" set num=%%i&goto :eof
-
- :RandGen
- set /a %1=%random%%%!num!
- goto :eof
-
- :StrInsert
- echo !line:~0,%1!!ins1!!line:~%1,%2!!ins2!!line:~%3!
- goto :eof
复制代码
作者: yong8723 时间: 2019-4-24 17:16
回复 11# Batcher
现在前面的数据又删除的,而且也不能提取标题数据插入文本中,插入次数能不能控制呢,想让他插入多少次都行,这个脚本好像只能插入1次
作者: Batcher 时间: 2019-4-24 17:25
回复 12# yong8723
11楼代码你再重新测试一下
作者: yong8723 时间: 2019-4-27 15:49
本帖最后由 yong8723 于 2019-4-27 15:51 编辑
回复 13# Batcher
文本标题:测试,22222,3333333333.txt
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
<p>而今,正在霸州工业新城内,一个个高端优质项目风起云涌、加疾设立的施工厂面,让人琳琅满目、倍感昂扬。抢抓都邑食物工业发生式延长的新时机,霸州工业新城都邑食物工业勉力...</p>
<div>
<hr />
</div>
<div class="post-image"><p>
<img src="http://www.xxx.com.cn/2018/0509/1525858579852.png" /></p>
<p>
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
下面这个bat脚本,随机调用以,符号分割标题插入到文本内容中,已经实现,但一个有问题,随机插入到文本内容的时候,他会随机插入到html标签内,导致html标签不完整,所以图片,链接,还有其它html标签失效,如:
<img 测试src="http://www.xxxx.com.cn/2018/05测试09/152585852222279852.png"
<a href="http://www.xx测试xnet/thread-10403-1-1.html"
<div3333333333>
能不能以下面这个脚本修改调用标题只随机插入到“中文”之间,这样就不会导致html标签失效,谢谢
@powershell -NoProfile -ExecutionPolicy bypass "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]:efault))").Invoke()}" & pause & exit
$cishu=3;
$output='结果';
[void](md $output -force);
dir *.txt|?{$_ -is [System.IO.FileInfo]}|%{
write-host $_.Name;
$arr=$_.BaseName.split(',',[StringSplitOptions]::RemoveEmptyEntries);
$text=[IO.File]::ReadAllText($_.FullName, [Text.Encoding]::Default);
[System.Collections.ArrayList]$char=$text.toCharArray();
for($i=0;$i -lt $cishu;$i++){
$n=0;while($n -lt $arr.Count){
$r=get-random @(0..($text.length-1));
if(($r -eq 0) -or ((@("`r","`n") -notcontains $char[$r]) -and (@("`r","`n") -notcontains $char[$r-1]))){
$char[$r]+=$arr[$n];
$n++;
};
};
};
out-file -file ($output+'\'+$_.Name) -input ($char -join '') -enc Default;
}
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |