Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用windows批处理复制一个文件的内容并粘贴到指定字符串之前?_Batch File_Cmd - Fatal编程技术网

Batch file 如何使用windows批处理复制一个文件的内容并粘贴到指定字符串之前?

Batch file 如何使用windows批处理复制一个文件的内容并粘贴到指定字符串之前?,batch-file,cmd,Batch File,Cmd,我有两个文件和一些内容。样本内容如下所示 目标文件: <TypesCatalogue><Type><ClassName>RuleID</ClassName><PackageName>com.fentbase.types.primitives</PackageName><ParentType>FEBAALong</ParentType><JavaType>Long</JavaType&

我有两个文件和一些内容。样本内容如下所示

目标文件:

<TypesCatalogue><Type><ClassName>RuleID</ClassName><PackageName>com.fentbase.types.primitives</PackageName><ParentType>FEBAALong</ParentType><JavaType>Long</JavaType></Type><Type><ClassName>TranRequestEntityId</ClassName><PackageName>com.fentbase.types.primitives</PackageName><ParentType>FEBAAString</ParentType><JavaType>String</JavaType></Type><Type><ClassName>HostCriteriaVO</ClassName><PackageName>com.fentbase.types.valueobjects</PackageName><ParentType>IFEBAValueObject</ParentType></Type></TypesCatalogue>
RuleIDcom.fentbase.types.primitivesFEBAALongLongTranRequestEntityIdcom.fentbase.types.primitivesFEBAAStringStringHostCriteriaVOcom.fentbase.types.ValueObjectsFebaValueObject
源文件:

<Type><ClassName>HostCriteriaVO</ClassName><PackageName>com.fentbase.types.valueobjects</PackageName><ParentType>IFEBAValueObject</ParentType></Type>
HostCriteriaVOcom.fentbase.types.valueobjectsIFEBAValueObject

源文件的内容应该插入到目标文件的
之前。

测试:它创建
newfile.xml

这使用了一个名为
repl.bat
(由dbenham提供)的助手批处理文件-下载自:

repl.bat
放在与批处理文件相同的文件夹中,或放在路径上的文件夹中

@echo off
type destination.xml|repl "</TypesCatalogue>" "" L >newfile.xml
type source.xml >> newfile.xml
>>newfile.xml echo ^</TypesCatalogue^>
@echo关闭
键入destination.xml | repl“”L>newfile.xml
键入source.xml>>newfile.xml
>>newfile.xml echo^
这在这里起作用:

@echo off
setlocal EnableDelayedExpansion

set /P "destination=" < destination.xml
set /P "source=" < source.xml
set /P "=!destination:</TypesCatalogue>=%source%!</TypesCatalogue>" < NUL > newDestination.xml
@echo关闭
setlocal EnableDelayedExpansion
设置/P“destination=“newDestination.xml

如果结果正确,只需从输出文件中删除“新”部分。

有毒字符和外来字符以及不带换行符的xml都将改变执行此任务的方式。要给您不中断的代码,我们需要查看文件的实际内容,以查看是否需要处理这些事情。编辑问题以示例文件内容。您的源文件中没有
example@a_horse_with_no_name,对不起,编辑错误。现在更新。@naveenbharadwaj您没有发表评论有什么原因吗?当我添加我的答案时,您正在发布。如果文件内容较少,则此操作有效。如果目标文件很大,则似乎存在一些问题。