【问题标题】:Batch script prepend and append text to files批处理脚本将文本添加到文件中
【发布时间】:2020-04-27 03:05:54
【问题描述】:

我需要在几个文件的开头和结尾添加几行文本。

我想使用批处理脚本来执行此操作。

我要做的第一件事是替换文件扩展名并将它们更改为 XMP。

最初,文件名遵循这种结构DJI_0035.mp4.json。

所以我开始:

set mypath=%~dp0 ren *.mp4.json *.xmp

然后,我需要添加:

<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 11.65'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>


 <rdf:Description rdf:about=''
  xmlns:exif='http://ns.adobe.com/exif/1.0/'>
  <exif:UserComment>
   <rdf:Alt>
    <rdf:li xml:lang='x-default'>

然后追加:

</rdf:li>
   </rdf:Alt>
  </exif:UserComment>
 </rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>

要追加我尝试做的事情:

FOR %%G IN (*) DO echo "</rdf:li>
   </rdf:Alt>
  </exif:UserComment>
 </rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>" >> %%G "%~dp0"

这适用于简单字符串,但不适用于 XML 代码。

我该如何解决这个问题?

【问题讨论】:

  • 由于 XML 的语法规则,您不应为此任务考虑批处理文件,除非它们反过来利用另一种理解语法并使用适当编码的语言或实用程序。我强烈建议您将注意力集中在 PowerShell 上,使用它搜索和编写代码。
  • 我会将页眉和页脚数据放入单独的文件中,然后在for loop 中使用copy 及其+ 选项将每个目标文件与它们组合...
  • Python 拥有出色的 XML 和文本编辑工具。这可能是一个值得考虑的选择吗?

标签: batch-file append rename prepend


【解决方案1】:

我有一个添加标题和尾记录的函数,它可能会做你想做的事:

:addHeaderAndTrailer
:: step 1 store headers and trailers into temp files
echo:%~1>_hdr.tmp
echo:%~2>_tlr.tmp

:: step 2 Concatenate the three
copy /a _hdr.tmp+%~3+_tlr.tmp _new.tmp>nul
move /y _new.tmp %~3>nul& rem 'move' saves a couple of copy/del steps

:: step 3 cleanup and exit
del _hdr.tmp & del _tlr.tmp

exit /b

:: /addHeaderAndTrailer

::addHeaderAndTrailer [1] [2] [3]
::===================
::FUNCTION appends header and trailer records into logs or other files
::PARAMETERS:
:: 1= Header Record
:: 1=  [/h] : this help screen
:: 2= Trailer Record
:: 3= Filename
::    if file doesn't exist, creates with just the headers and trailers

【讨论】:

  • 当然,您需要填充标题和结尾字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多