关于windows:更新文档中的部分文本

Update part of text in document

本问题已经有最佳答案,请猛点这里访问。

我有一个可以用记事本打开的.xal文件。以下是对我很重要的部分:

...
magV=1
invert=0
text=01000000237843141114052693183714

[Pri1]
enabled=0
...

我想创建一个脚本,它将自动替换第128行中文本140526的一部分(它是一些旧日期-2014年5月26日),并替换为当前日期。例如:今天应该是160816,明天应该是160817等。

如前所述,文本在第128行,字符从24到30。

如果到处搜索(sed查找win、vba、powershell,…),但我找不到任何有用的东西。

提前谢谢大家!


如果您执行Windows批处理文件并使用SED,则工作正常

基本上,使用set和内置的DATE环境变量将年、月、日提取为6位字符串(DATE包含yy/mm/dd,需要删除斜线)然后只在第128行应用SED,创建一个组,将组+接下来的6个字符替换为同一组+新日期。

-i标志允许执行就地替换,以便更新输入文件,而不是在标准输出中输出结果。

1
2
3
4
set D=%DATE%
set D=%D:~0,2%%D:~3,2%%D:~6,2%
echo %D%
sed -i"128s/\(text=..................\)....../\1%D%/" input.txt

这里有一个使用PowerShell的解决方案:

1
2
3
$content = Get-Content 'your_file_path'
$content[127] = $content[127] -replace '(.{24}).{6}', ('${{1}}{0}' -f (Get-Date).ToString('yyMMdd'))
$content | Set-Content 'your_file_path'