标题: [文本处理] 批处理如何修改txt文本里的日期? [打印本页]
作者: weiwei9527 时间: 2020-5-18 16:15 标题: 批处理如何修改txt文本里的日期?
本帖最后由 weiwei9527 于 2020-5-19 07:40 编辑
大家好,我有个批处理麻烦大家帮看看怎么写。批处理要求如下:
有个文档aa.txt,里面"endDate\":\"2020-xx-xx 23:55:00\"
和"startDate\":\"2020-xx-xx 00:00:00\"两个日期2020-xx-xx改成当前系统的日期(只改日期,不改时\分\秒),且2020-xx-xx是指2020年某月某日,某月某日是不固定
怎么处理进行修改,谢谢
作者: smss 时间: 2020-5-18 21:06
- @echo off
- set date=%date:~0,4%-%date:~5,2%-%date:~8,2%&set time=%time:~,2%:%time:~3,2%:%time:~6,2%
- PowerShell "$s=[IO.File]::ReadAllText('aa.txt', [Text.Encoding]::Default) -replace '"endDate\":\"2020-xx-xx 23:55:00\", '"endDate\":\"%date% %time%\"';[IO.File]::WriteAllText('aa.txt', $s, [Text.Encoding]::Default)"
- pause
复制代码
作者: weiwei9527 时间: 2020-5-18 23:25
回复 2# smss
你好,提示以下报错:
所在位置 行:1 字符: 120
+ ... 13 23:55:00", 'endDate":"2020-05-18 23:23:54"';[IO.File]::WriteAllText('r
ealtime ...
+ ~~~~~~~~~~~~~~~~~~~~
表达式或语句中包含意外的标记“endDate":"2020-05-18”。
所在位置 行:1 字符: 149
+ ... -05-18 23:23:54"';[IO.File]::WriteAllText('realtime_success.txt', $s, [Te
xt.Enco ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~
字符串缺少终止符: "。
+ CategoryInfo : ParserError: ( [], ParentContainsErrorRecordEx
ception
+ FullyQualifiedErrorId : UnexpectedToken
请按任意键继续. . .
作者: weiwei9527 时间: 2020-5-18 23:27
回复 2# smss
说明一下:2020-xx-xx是2020年某月某日,某月某日是不固定
作者: smss 时间: 2020-5-19 02:44
本帖最后由 pcl_test 于 2020-5-19 04:39 编辑
- <# :
- @echo off
- powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
- pause
- exit
- #>
- $leftstr='"endDate\":\"';
- $rightstr='\"';
- $path=$args[0];
- $newfolder=$path+'';
- if(-not (test-path -liter $newfolder)){[void](md $newfolder)};
- $files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
- $enc=[Text.Encoding]::Default;
- $regstr='('+[regex]::Escape($leftstr)+').+?('+[regex]::Escape($rightstr)+')';
- for($i=0;$i -lt $files.length;$i++){
- write-host $files[$i].Name;
- $text=[IO.File]::ReadAllText($files[$i].FullName, $enc);
- $text=[regex]::replace($text,$regstr,{param($a);$a.groups[1].value+ (Get-Date).ToString("yyyy-M-d HH:mm:ss") +$a.groups[2].value;});
- $newfile=$newfolder+'\'+$files[$i].Name;
- [IO.File]::WriteAllText($newfile, $text, $enc);
- break;
- };
复制代码
作者: weiwei9527 时间: 2020-5-19 07:45
回复 5# smss
你好,有3个疑问:
1、能不能只改日期部分;
2、如果我设置成计划任务来执行,该批处理是不是只处理和它同文件夹下面的txt文件?还是全电脑磁盘里的txt文件?
3、文件里还有"startDate\":\"2020-xx-xx 00:00:00\"没改日期,是我忘了写,这个日期也改一下
作者: WHY 时间: 2020-5-19 10:31
C:\Users\WHY>cd /d E:\Test\
E:\Test>type aa.txt
有个文档aa.txt,里面"endDate\":\"2020-04-20 23:55:00\"
和"startDate\":\"2020-05-30 00:00:00\"两个日期2020-xx-xx改成当前系统的日期
E:\Test>PowerShell "(type aa.txt) -replace '(?<=(?:start|end)Date\\\\\":\\\\\")\d{4}-\d\d-\d\d', (get-Date).ToString('yyyy-MM-dd')"
有个文档aa.txt,里面"endDate\":\"2020-05-19 23:55:00\"
和"startDate\":\"2020-05-19 00:00:00\"两个日期2020-xx-xx改成当前系统的日期
E:\Test>
作者: smss 时间: 2020-5-19 12:43
- PowerShell "$s=[IO.File]::ReadAllText('aa.txt', [Text.Encoding]::Default) -replace '(?<=(?:start|end)Date\\\\\":\\\\\")\d{4}-\d\d-\d\d', (get-Date).ToString('yyyy-MM-dd');[IO.File]::WriteAllText('aa.txt', $s, [Text.Encoding]::Default)"
复制代码
作者: weiwei9527 时间: 2020-5-19 16:25
本帖最后由 weiwei9527 于 2020-5-19 16:27 编辑
回复 8# smss
你好,我直接把原始文档aa.txt的内容贴出来,如下:
http://55.44.138.201:9081/dahuaIS/rest/picrecord/search {"q":"{\"endDate\":\"2020-05-17 16:10:03\",\"page\":{\"pageNo\":1,\"pageSize\":1000},\"startDate\":\"2020-05-15 16:10:03\"}"}
我要把
endDate的时间改为:当前系统日期 23:58:00
startDate的时间改为:当前系统日期 00:00:00
注:日期部分都设置为当前系统日期,endDater的时间固定为23:58:00;startDate的时间固定为00:00:00
作者: smss 时间: 2020-5-19 17:39
- PowerShell "$s=[IO.File]::ReadAllText('aa.txt', [Text.Encoding]::Default) -replace '(?<=(?:end)Date\\\\\":\\\\\")\d{4}-\d\d-\d\d \d\d:\d\d:\d\d', (get-Date).ToString('yyyy-MM-dd 23:58:00') -replace '(?<=(?:start)Date\\\\\":\\\\\")\d{4}-\d\d-\d\d \d\d:\d\d:\d\d', (get-Date).ToString('yyyy-MM-dd 00:00:00');[IO.File]::WriteAllText('aa1.txt', $s, [Text.Encoding]::Default)"
复制代码
能给原文别举例代指 清晰的描述能快速高效的解决问题
原文一改再改 建议发有偿区资助论坛
作者: weiwei9527 时间: 2020-5-19 18:00
回复 10# smss
不好意思,是我没把问题说清楚,下次我到有偿的页面去发帖,这次按照你的脚本执行后,得到下面结果
http://55.51.138.201:9081/dahuaIS/rest/picrecord/search {"q":"{\"endDate\":\"2020-5-14 15:37:25\",\"page\":{\"pageNo\":1,\"pageSize\":1000},\"startDate\":\"2020-05-19 00:00:00\"}"}
endDate的日期和时间没有改成功,麻烦再看看
作者: smss 时间: 2020-5-19 18:02
本帖最后由 smss 于 2020-5-19 18:16 编辑
2020-5-14应该是2020-05-14格式 机器只会生成固定格式 你手动改成单数导致筛选不到想想你本身问题
作者: weiwei9527 时间: 2020-5-19 19:36
回复 12# smss
谢谢指正
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |