我想从外部列表(简单地一行中的每个单词)中搜索单词列表,我们将其称为“List.txt”,并在文件中搜索它们(C:\ Users \ P Ditty \文件\SH3\data\cfg\Backups_SCR*.clg)(匹配整个单词,即使它在另一个单词中,并且匹配大小写),然后如果它们在那里,请在另一个文件上找到这些词(Campaign_SCR.mis.tmp)(匹配整个单词,即使它在另一个单词中,匹配大小写)仅当该行以“Name=”开头时,才将 (Campaign_SCR.mis.tmp) 中的整行替换为 Name=ShipDummy。之后,同一文件中下面的两行将替换为第二行“Class=ShipDummy”,然后替换为第三行“Type=206”。
这是我现在的代码。现在它搜索 ClassName=Variable在 C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR*.clg 中,如果在 Campaign_SCR.mis.tmp 中找到该变量,则它会将整行替换为 Class=ShipDummy。它还将下面的 1 行替换为“Type=206”。
setlocal enableDelayedExpansion
>Campaign_SCR.mis.tmp (
for /f "tokens=1* delims=:" %%A in ('findstr /n "^" Campaign_SCR.mis.backup') do (
( echo !ln!| findstr "^Type=12$" >NUL && set ln=ln ) || (
set "ln=%%B"
if "!ln:~0,6!"=="Class=" (
findstr /s /c:"ClassName=!ln:~6!" "C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR\*.clg" >"C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR\null" && (
echo Class=ShipDummy
set "ln=Type=12"
)
)
if #!ln!==# (echo;) else echo !ln!
)
)
)
但我希望它从我指定的列表中搜索名称,在 (C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR*.clg) 中搜索。然后,如果找到匹配项,则在 Campaign_SCR.mis.tmp 中搜索该匹配项并替换整行,前提是该行以“Name=”开头且 Name=ShipDummy。下面的两行将替换为第二行“Class=ShipDummy”,然后替换为第三行“Type=206”:
Name=ShipDummy
Class=ShipDummy
Type=206
**请记住,在 Campaign_SCR.mis.tmp 中,变量的行通常不会显示为 Name=variable。很可能是Name=(words)variable(words)
搜索的列表可以是外部的吗?我们可以让它每行搜索一个单词吗?例如:如果列表如下:
俾斯麦
兜帽
击退
它将搜索每个单词。**
当它将列表中的单词与 (C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR*.clg) 匹配时,请确保它也匹配大小写。因此,列表中的“俾斯麦”将从 (C:\Users\P Ditty\Documents\SH3\data\cfg\Backups_SCR*.clg) 中找到“俾斯麦”,而不是找到“俾斯麦”
感谢您的时间!
顺便说一句,这可能是解决我遇到的问题的更简单的方法:我该如何应用这个? https://stackoverflow.com/questions/15017118/how-do-i-apply-this
例如:
假设我有一个外部列表(例如,将其称为 List.txt),如下所示:
Bismarck
Hood
Repulse
我将搜索 C:\Users\P Diddy\Documents\SH3\data\cfg\Backups_SCR*.college 。假设它在其中找到“Bismarck”和“Hood”:
sadfasfasfdBismarckfasdfasdfasdfas
asdfasfdafHoodasdfasfas
然后它将搜索 Campaign_SCR.mis.tmp 中的 Bismarck 和 Hood 替换:
Name=asdfBismarckasfdw
Class=jlkjf
Type=12
With:
Name=ShipDummy
Class=ShipDummy
Type=206
And
Name=asdfHoodasfdw
Class=jlkjf
Type=13
With:
Name=ShipDummy
Class=ShipDummy
Type=206