Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 如何在不替换替换文本的情况下替换文本_Batch File_Vbscript - Fatal编程技术网

Batch file 如何在不替换替换文本的情况下替换文本

Batch file 如何在不替换替换文本的情况下替换文本,batch-file,vbscript,Batch File,Vbscript,我试图重复替换文件中的文本。但是,一旦我替换了文本一次,它就会再次被替换 我正在使用一个.vbs文件替换文本,使用一个.bat文件重复执行.vbs文件。我试图以这样一种方式来执行它,在文本被替换之后,它不再被替换 我有一个名为replace.vbs的.vbs文件,它是从以下链接获得的: 我有一个.bat文件,它反复执行replace.vbs(整个脚本运行replace.vbs 56次) myFile.txt中的文本为“Hello World Testing”,预期输出为“Testing tex

我试图重复替换文件中的文本。但是,一旦我替换了文本一次,它就会再次被替换

我正在使用一个.vbs文件替换文本,使用一个.bat文件重复执行.vbs文件。我试图以这样一种方式来执行它,在文本被替换之后,它不再被替换

我有一个名为replace.vbs的.vbs文件,它是从以下链接获得的:

我有一个.bat文件,它反复执行replace.vbs(整个脚本运行replace.vbs 56次)

myFile.txt中的文本为“Hello World Testing”,预期输出为“Testing text”,但输出为“text text”。如何让第二次执行replace.vbs时忽略第一次执行时替换的所有文本


有可能有一个更简单的解决方案在回避我,所以我将后退一步。我实际上要做的是获取一个文本文件,其中包含字母a到g(大写和小写),后跟最多3个撇号或最多4个逗号(在任何情况下都没有逗号和撇号)。共有52个组合,我试图将每个可能的组合映射到一个字母(52个不同的字母,因为它区分大小写)

在没有看到您试图映射的实际序列的情况下,很难建议要做什么,但通常先映射最长的序列。此外,如果一个序列被映射到可以被另一个映射替换的某个对象,则先将其临时映射到某个不会被后续映射替换的唯一序列。对每个映射都这样做。然后,在完成所有映射后,将临时唯一序列替换为您最初希望映射到的序列

在您的示例中,您可以将“Hello World”映射到数据中未出现的某个序列,比如“-1-”,一旦所有映射完成,就将“-1-”映射到“测试”

下面是如何修改
replave.vbs
脚本以实现我的建议

SET abcpath=C:\test\myFile.txt

cscript replace.vbs %abcpath% "Hello World" "--1--"
cscript replace.vbs %abcpath% "Testing" "--2--"

cscript replace.vbs %abcpath% "--1--" "Testing"
cscript replace.vbs %abcpath% "--2--" "Text"

PAUSE

我认为最初的Replace()会导致myFile.txt包含:“Testing”

当您第二次调用脚本时,它会找到两个“测试”值,并将它们替换为“文本”

您必须按如下方式修改批处理文件以获得所需的输出:

SET abcpath=C:\test\myFile.txt

cscript replace.vbs %abcpath% "Hello" "Testing"
cscript replace.vbs %abcpath% "World Testing" "Text"

PAUSE
替换顺序如下所示:

1. Hello World Testing
2. Testing World Testing
3. Testing Text

首先,为什么不先替换“测试”,然后再替换“Hello World”,看看这是否适合你。我只是用“Hello World”和“测试”作为例子,以避免混淆。(过于具体的细节传入)我实际上要做的是获取一个文本文件,其中包含字母a到g(大写和小写),后跟最多3个撇号或最多4个逗号(在任何情况下都没有逗号和撇号)。共有52个组合,我试图将每个可能的组合映射到一个字母(52个不同的字母,因为它区分大小写),这似乎是关键信息。请将问题添加到示例中,以便更容易理解。这听起来是可以通过适当的正则表达式支持解决的,不要重新发明轮子-请查看您的问题,以包含其他信息,包括一些示例。
SET abcpath=C:\test\myFile.txt

cscript replace.vbs %abcpath% "Hello" "Testing"
cscript replace.vbs %abcpath% "World Testing" "Text"

PAUSE
1. Hello World Testing
2. Testing World Testing
3. Testing Text