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 修改.bat脚本以将我选择的文本添加到输出中_Batch File - Fatal编程技术网

Batch file 修改.bat脚本以将我选择的文本添加到输出中

Batch file 修改.bat脚本以将我选择的文本添加到输出中,batch-file,Batch File,我在下面的部分代码中发布了一个问题,得到了精彩的回答,帮助我解决了问题。关于下面代码的有效性有一些争论,但目前它对我有效,我将在空闲时间研究这些问题 @echo off >nul find "var Want_spring_aid_file_update = 1;" "input.txt" && ( >>output.txt ( for /f usebackq^ tokens^=2^ delims^=^" %%A in ( 'findstr /C:var

我在下面的部分代码中发布了一个问题,得到了精彩的回答,帮助我解决了问题。关于下面代码的有效性有一些争论,但目前它对我有效,我将在空闲时间研究这些问题

@echo off
>nul find "var Want_spring_aid_file_update = 1;" "input.txt" && (
  >>output.txt (
 for /f usebackq^ tokens^=2^ delims^=^" %%A in ( 'findstr /C:var Front_spring_aid_file = ^"part_name1^"; "input.txt"') do echo %%A
)
)
我需要用这段代码解决的问题基本上是探测文本文件中是否存在字符串,并根据结果在同一文本文件的特定行的双引号之间获取或不获取字符串,然后将其放入新的文本文件中。现在,正如标题所解释的,我想在输出中添加一些我选择的文本

基本上说,我的输入文本文件中有以下代码:

var Want_spring_aid_file_update = 1;
var Front_spring_aid_file = "part_name1";
var Rear_spring_aid_file = "part_name2";
我当前的脚本当前检查第一行中的字符串是否存在,如果存在,它将探测第二行并抓住
之间的字符串,并将其放入新的文本文件中


如何在同一行中添加我选择的文本?因此,如果它输出
part\u name1
如何添加
该模型已使用part
进行了更新?

基于此和您之前的相关问题,以下内容对您有何帮助

@Echo关闭
设置“FI=input.txt”
设置“VM=var需要\u spring\u aid\u file\u update”
设置“FM=var前弹簧辅助文件”
设置“SM=var后弹簧辅助文件”
设置“FO=output.txt”
设置“SO=模型已用零件更新”
对于/F“Tokens=2Delims==;”%%A In(
'查找/I“%VM%”“^Nul”)是否回显%SO%%%A)
仅当
Want\u spring\u aid\u file\u update
的值为
1
时,它才会检索所需的两个值

[编辑]-(已测试的Win7)

以下是我的
input.txt的全部内容:

// commented line only
var Want_spring_aid_file_update = 1;
var Front_spring_aid_file = "part_name1";
var Mid_spring_aid_file = "part_name1.5";
var Rear_spring_aId_file = "part_name2";
The model was updated with part part_name1
The model was updated with part part_name2

output.txt

// commented line only
var Want_spring_aid_file_update = 1;
var Front_spring_aid_file = "part_name1";
var Mid_spring_aid_file = "part_name1.5";
var Rear_spring_aId_file = "part_name2";
The model was updated with part part_name1
The model was updated with part part_name2

基于这一点和您之前的相关问题,以下内容对您有何帮助

@Echo关闭
设置“FI=input.txt”
设置“VM=var需要\u spring\u aid\u file\u update”
设置“FM=var前弹簧辅助文件”
设置“SM=var后弹簧辅助文件”
设置“FO=output.txt”
设置“SO=模型已用零件更新”
对于/F“Tokens=2Delims==;”%%A In(
'查找/I“%VM%”“^Nul”)是否回显%SO%%%A)
仅当
Want\u spring\u aid\u file\u update
的值为
1
时,它才会检索所需的两个值

[编辑]-(已测试的Win7)

以下是我的
input.txt的全部内容:

// commented line only
var Want_spring_aid_file_update = 1;
var Front_spring_aid_file = "part_name1";
var Mid_spring_aid_file = "part_name1.5";
var Rear_spring_aId_file = "part_name2";
The model was updated with part part_name1
The model was updated with part part_name2

output.txt

// commented line only
var Want_spring_aid_file_update = 1;
var Front_spring_aid_file = "part_name1";
var Mid_spring_aid_file = "part_name1.5";
var Rear_spring_aId_file = "part_name2";
The model was updated with part part_name1
The model was updated with part part_name2

谢谢你的帮助!我已经尝试过这个脚本,它可以工作,但是有一个小错误在那里的某处,导致它输出相同的东西两次。因此,它不输出“模型更新为零件‘零件’名称1’”和“模型更新为零件‘零件’名称2’”,而是输出第一项两次。我自己也尝试过,但我不确定这些功能是如何工作的。我已经基本上做了两天的批处理脚本了,哈哈。我会继续尝试解决它。我已经测试了脚本,它在我的环境中运行得非常好。我已经用我的
input.txt
output.txt
文件的副本更新了答案。很抱歉,我在家里用我的个人笔记本电脑测试了一下,效果非常好。然后我在我的工作输入文件中发现了一个小错误,导致了异常。聪明的家伙。如果我能打扰你的话,我有几个关于剧本的问题,只是为了确保我能理解到最后一个角色。在字符串
'Find/I“%VM%”中^?我猜
FindStr/ILC:“%FM%”/C:“%SM%”“%FI%”中的
2^>Nul
与上一个字符串中的操作相同。最后一件小事是
/ILC:
基本上是由多个交换机组成的,对吗?谢谢你的帮助!我已经尝试过这个脚本,它可以工作,但是有一个小错误在那里的某处,导致它输出相同的东西两次。因此,它不输出“模型更新为零件‘零件’名称1’”和“模型更新为零件‘零件’名称2’”,而是输出第一项两次。我自己也尝试过,但我不确定这些功能是如何工作的。我已经基本上做了两天的批处理脚本了,哈哈。我会继续尝试解决它。我已经测试了脚本,它在我的环境中运行得非常好。我已经用我的
input.txt
output.txt
文件的副本更新了答案。很抱歉,我在家里用我的个人笔记本电脑测试了一下,效果非常好。然后我在我的工作输入文件中发现了一个小错误,导致了异常。聪明的家伙。如果我能打扰你的话,我有几个关于剧本的问题,只是为了确保我能理解到最后一个角色。在字符串
'Find/I“%VM%”中^?我猜
FindStr/ILC:“%FM%”/C:“%SM%”“%FI%”中的
2^>Nul
与上一个字符串中的操作相同。最后一点是
/ILC:
基本上是多个交换机的结构,对吗?