标题: 【已完成】【100元】bat通过txt和其他,新增或修改csv文件 [打印本页]
作者: linfeng_321 时间: 2022-3-16 17:39 标题: 【已完成】【100元】bat通过txt和其他,新增或修改csv文件
本帖最后由 linfeng_321 于 2022-3-16 20:54 编辑
需求:通过“开始.bat”和“结束.bat”查找“1222211223\文档\文档.txt”对应参数,并将信息记录到“记录.csv”文件里
------------------------
双击“1222211223\开始.bat”时,获取“本机当前用户名”、“本机IP地址”、“名称”、“编号”、“作者”、“开始时间”、当前状态为“制作中”,插入“记录.csv”文件里。
注:“编号”是获取上一层文件夹名。
记录.csv,结果如下:
"本机当前用户名","本机IP地址","编号","名称","版本","作者","开始时间","结束时间","当前状态","制作次数"
"username","192.168.1.22","1222211223","一个小蝌蚪","二麻子","3","2022/03/16 16:47:25","","制作中","0"
------------------------
双击“1222211223\结束.bat”时,查找相同“编号”这行,将“结束时间”和“当前状态”修改成“已完成”插入“记录.csv”文件里。
注:“制作次数”是运行一次“1222211223\结束.bat”,加+1记录一次(初始值为0)
记录.csv,结果如下:
"本机当前用户名","本机IP地址","编号","名称","版本","作者","开始时间","结束时间","当前状态","制作次数"
"username","192.168.1.22","1222211223","一个小蝌蚪","二麻子","3","2022/03/16 16:48:05","","已完成","1"
------------------------
不同“编号”文件夹名,新增“记录.csv”一条数据。
相同“编号”文件夹名,修改“记录.csv”一条数据。
记录.csv,结果如下:
"本机当前用户名","本机IP地址","编号","名称","版本","作者","开始时间","结束时间","当前状态","制作次数"
"username","192.168.1.22","1222211223","一个小蝌蚪","二麻子","3","2022/03/16 16:48:05","","已完成","2"
除了“编号”数据,其他参数需要重新获取,制作次数在原有数字上“加+1”
链接:https://pan.baidu.com/s/1FzJZe3FklzUrS2qp3gfikw
提取码:hvdm
作者: zaqmlp 时间: 2022-3-16 19:50
开始- <# :
- cls&echo off&cd /d "%~dp0"&rem 编码ANSI
- powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
- pause
- exit
- #>
- $csvfile=".\..\记录.csv";
- $txtfile=".\文档\文件.txt";
-
- $ip='null';
- $wmi=Get-WmiObject -Class Win32_NetworkAdapterConfiguration|?{($_.IPEnabled -eq $true) -and ($_.Description -notmatch 'Virtual')};
- if($wmi.IPAddress -ne $null){
- $ip=$wmi.IPAddress[0];
- }
-
- $filename='null';
- $author='null';
- $version='null';
- $enc=[Text.Encoding]::GetEncoding('GB2312');
- if(test-path -literal $txtfile){
- $text=[IO.File]::ReadAllText($txtfile, $enc);
- $m=[regex]::match($text, '@名称@=([^\r\n]+)');
- if($m.Success){$filename=$m.groups[1].value;}
- $m=[regex]::match($text, '@作者@=([^\r\n]+)');
- if($m.Success){$author=$m.groups[1].value;}
- $m=[regex]::match($text, '@版本@=([^\r\n]+)');
- if($m.Success){$version=$m.groups[1].value;}
- }else{write-host ('"'+$txtfile+'" 未找到');}
-
- $parentfolder=(get-item -literal ".").Name;
-
- $starttime=(get-date).ToString('yyyy-MM-dd HH:mm:ss');
-
- $arr=@(
- $($env:USERNAME);
- $ip,
- $parentfolder,
- $filename,
- $author,
- $version,
- $starttime,
- "",
- "制作中",
- "0"
- );
-
- $enc=[Text.Encoding]::GetEncoding('UTF-8');
- $title='"本机当前用户名","本机IP地址","编号","名称","版本","作者","开始时间","结束时间","当前状态","制作次数"';
- if(-not (test-path -literal $csvfile)){
- $line='"'+($arr -join '","')+'"';
- $newtext=$title+"`r`n"+$line;
- [IO.File]::WriteAllText($csvfile, $newtext, $enc);
- }else{
- $oldtext=[IO.File]::ReadAllLines($csvfile, $enc);
- $isexist=$false;
- for($i=0;$i -lt $oldtext.count;$i++){
- $brr=$oldtext[$i].trim('"') -split '","';
- if($brr[2] -eq $parentfolder){
- $isexist=$true;
- $arr[9]=([int]$brr[9]+1).ToString();
- $oldtext[$i]='"'+($arr -join '","')+'"';
- }
- }
- if($isexist){
- [IO.File]::WriteAllLines($csvfile, $oldtext, $enc);
- }else{
- $line='"'+($arr -join '","')+'"';
- $newtext=($oldtext -join "`r`n")+"`r`n"+$line;
- [IO.File]::WriteAllText($csvfile, $newtext, $enc);
- }
- }
复制代码
作者: zaqmlp 时间: 2022-3-16 19:51
结束- <# :
- cls&echo off&cd /d "%~dp0"&rem 编码ANSI
- powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
- pause
- exit
- #>
- $csvfile=".\..\记录.csv";
- $txtfile=".\文档\文件.txt";
-
- $ip='null';
- $wmi=Get-WmiObject -Class Win32_NetworkAdapterConfiguration|?{($_.IPEnabled -eq $true) -and ($_.Description -notmatch 'Virtual')};
- if($wmi.IPAddress -ne $null){
- $ip=$wmi.IPAddress[0];
- }
-
- $filename='null';
- $author='null';
- $version='null';
- $enc=[Text.Encoding]::GetEncoding('GB2312');
- if(test-path -literal $txtfile){
- $text=[IO.File]::ReadAllText($txtfile, $enc);
- $m=[regex]::match($text, '@名称@=([^\r\n]+)');
- if($m.Success){$filename=$m.groups[1].value;}
- $m=[regex]::match($text, '@作者@=([^\r\n]+)');
- if($m.Success){$author=$m.groups[1].value;}
- $m=[regex]::match($text, '@版本@=([^\r\n]+)');
- if($m.Success){$version=$m.groups[1].value;}
- }else{write-host ('"'+$txtfile+'" 未找到');}
-
- $parentfolder=(get-item -literal ".").Name;
-
- $endtime=(get-date).ToString('yyyy-MM-dd HH:mm:ss');
-
-
-
- $enc=[Text.Encoding]::GetEncoding('UTF-8');
- if(-not (test-path -literal $csvfile)){
- write-host ('"'+$txtfile+'" 未找到');
- exit;
- }else{
- $oldtext=[IO.File]::ReadAllLines($csvfile, $enc);
- $isexist=$false;
- for($i=0;$i -lt $oldtext.count;$i++){
- $brr=$oldtext[$i].trim('"') -split '","';
- if($brr[2] -eq $parentfolder){
- $isexist=$true;
- $brr[0]=$env:USERNAME;
- $brr[1]=$ip;
- $brr[3]=$filename;
- $brr[4]=$author;
- $brr[5]=$version;
- $brr[7]=$endtime;
- $brr[8]="已完成";
- $brr[9]=([int]$brr[9]+1).ToString();
- $oldtext[$i]='"'+($brr -join '","')+'"';
- break;
- }
- }
- if($isexist){
- [IO.File]::WriteAllLines($csvfile, $oldtext, $enc);
- }else{
- write-host '未开始';
- }
- }
复制代码
作者: linfeng_321 时间: 2022-3-16 20:53
支付宝,已支付,谢谢!
作者: 5i365 时间: 2022-3-17 08:03
回复 2# zaqmlp
大侠好, 想请教一下, 您的脚本前面的如下代码和【#@&cls&powershell "gc '%~0'|out-string|iex"&pause&exit】相比可以规避哪些陷阱呢?
<# :
cls&echo off&cd /d "%~dp0"&rem 编码ANSI
powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
pause
exit
#>
作者: linfeng_321 时间: 2022-3-17 14:25
回复 3# zaqmlp
加20元红包
新增和修改数据,插入第二行显示;
"本机当前用户名","本机IP地址","编号","名称","版本","作者","开始时间","结束时间","当前状态","制作次数"
----新增或修改后这条数据,插入第二行显示。以此类推往下排序。
"username","192.168.1.22","1222211223","一个小蝌蚪","二麻子","3","2022/03/16 16:48:05","","已完成","2"
作者: zaqmlp 时间: 2022-3-17 14:31
回复 6# linfeng_321
报酬少了,50元帮改
作者: linfeng_321 时间: 2022-3-17 14:38
回复 7# zaqmlp
就50
作者: zaqmlp 时间: 2022-3-17 14:54
本帖最后由 zaqmlp 于 2022-3-17 16:07 编辑
开始
作者: linfeng_321 时间: 2022-3-17 15:12
回复 9# zaqmlp
倒序排列
"本机当前用户名","本机IP地址","编号","名称","版本","作者","开始时间","结束时间","当前状态","制作次数"
----新增或修改后数据时,插入第二行显示。以此类推往下排序。
"username","192.168.1.21","1222211244","小小蜜蜂","大麻子","2","2022/03/16 16:48:06","2022/03/16 16:48:17","已完成","2"
"username","192.168.1.22","1222211223","一个小蝌蚪","二麻子","3","2022/03/16 16:48:05","2022/03/16 16:48:15","已完成","2"
没有修改的数据...
作者: linfeng_321 时间: 2022-3-17 15:13
新增或修改这条数据时,倒序排列。
作者: zaqmlp 时间: 2022-3-17 15:16
回复 10# linfeng_321
为什么不早说倒序排,100元
作者: linfeng_321 时间: 2022-3-17 15:17
开始.bat
目前永远只显示一条数据:不对
结束.bat
是不是也要写一下,数据也修改了,那么排列顺序就变了
我大概的意思
作者: zaqmlp 时间: 2022-3-17 15:33
回复 13# linfeng_321
结束还没改完
不知道你说什么意思,算了,放弃
作者: linfeng_321 时间: 2022-3-17 15:34
回复 6# linfeng_321
----新增或修改后这条数据,插入第二行显示。以此类推往下排序。
这结果不就是倒序排吗?什么乱七八糟的不懂
作者: zaqmlp 时间: 2022-3-17 16:07
开始- <# :
- cls&echo off&cd /d "%~dp0"&rem 编码ANSI
- powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
- pause
- exit
- #>
- $csvfile=".\..\记录.csv";
- $txtfile=".\文档\文件.txt";
-
- $ip='null';
- $wmi=Get-WmiObject -Class Win32_NetworkAdapterConfiguration|?{($_.IPEnabled -eq $true) -and ($_.Description -notmatch 'Virtual')};
- if($wmi.IPAddress -ne $null){
- $ip=$wmi.IPAddress[0];
- }
-
- $filename='null';
- $author='null';
- $version='null';
- $enc=[Text.Encoding]::GetEncoding('GB2312');
- if(test-path -literal $txtfile){
- $text=[IO.File]::ReadAllText($txtfile, $enc);
- $m=[regex]::match($text, '@名称@=([^\r\n]+)');
- if($m.Success){$filename=$m.groups[1].value;}
- $m=[regex]::match($text, '@作者@=([^\r\n]+)');
- if($m.Success){$author=$m.groups[1].value;}
- $m=[regex]::match($text, '@版本@=([^\r\n]+)');
- if($m.Success){$version=$m.groups[1].value;}
- }else{write-host ('"'+$txtfile+'" 未找到');}
-
- $parentfolder=(get-item -literal ".").Name;
-
- $starttime=(get-date).ToString('yyyy-MM-dd HH:mm:ss');
-
- $arr=@(
- $($env:USERNAME);
- $ip,
- $parentfolder,
- $filename,
- $author,
- $version,
- $starttime,
- "",
- "制作中",
- "0"
- );
-
- $enc=[Text.Encoding]::GetEncoding('UTF-8');
- $title='"本机当前用户名","本机IP地址","编号","名称","版本","作者","开始时间","结束时间","当前状态","制作次数"';
- if(-not (test-path -literal $csvfile)){
- $line='"'+($arr -join '","')+'"';
- $newtext=$title+"`r`n"+$line;
- [IO.File]::WriteAllText($csvfile, $newtext, $enc);
- }else{
- $oldtext=[IO.File]::ReadAllLines($csvfile, $enc);
- $isexist=$false;
- for($i=0;$i -lt $oldtext.count;$i++){
- $brr=$oldtext[$i].trim('"') -split '","';
- if($brr[2] -eq $parentfolder){
- $isexist=$true;
- $arr[9]=([int]$brr[9]+1).ToString();
- $oldtext[$i]='"'+($arr -join '","')+'"';
- }
- }
- if($isexist){
- [IO.File]::WriteAllLines($csvfile, $oldtext, $enc);
- }else{
- $line='"'+($arr -join '","')+'"';
- $newtext=$oldtext[0]+"`r`n"+$line;
- if($oldtext.count -ge 2){
- $newtext=$oldtext[0]+"`r`n"+$line+"`r`n"+($oldtext[1..($oldtext.count-1)] -join "`r`n");
- }
- [IO.File]::WriteAllText($csvfile, $newtext, $enc);
- }
- }
复制代码
作者: zaqmlp 时间: 2022-3-17 16:10
回复 15# linfeng_321
如果这样,那么只要修改开始不就行了
作者: linfeng_321 时间: 2022-3-17 16:37
回复 17# zaqmlp
这样也行,费用过去了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |