Пакетный скрипт дописывает и добавляет текст в файлы - PullRequest
0 голосов
/ 09 января 2020

Мне нужно добавить несколько строк текста в начало и конец нескольких файлов.

Я хочу, чтобы сделать это с помощью пакетного сценария.

Первое, что я происходит замена файловых расширений и их изменение на 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.

Как обойти эту проблему?

1 Ответ

0 голосов
/ 11 января 2020

У меня есть функция, которая добавляет заголовок и запись трейлера, которая может делать то, что вы хотите:

: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
...