Windows 使用批处理脚本在文件中的特定位置插入字符串
我是批处理脚本的新手,我有一个包含单词“media”(包括引号)的字符串的文件,我需要在它前面插入另一个字符串。 我把findstr弄得乱七八糟,但弄不清是怎么回事。Windows 使用批处理脚本在文件中的特定位置插入字符串,windows,batch-file,Windows,Batch File,我是批处理脚本的新手,我有一个包含单词“media”(包括引号)的字符串的文件,我需要在它前面插入另一个字符串。 我把findstr弄得乱七八糟,但弄不清是怎么回事。 Edit2: 以下是我所做的,似乎不起作用: @echo off SETLOCAL=ENABLEDELAYEDEXPANSION for /f "delims=," %%a in (f1.txt) do ( set foo=%%a if !foo!=="media" set var=!foo:"media"=aa"me
Edit2:
以下是我所做的,似乎不起作用:
@echo off
SETLOCAL=ENABLEDELAYEDEXPANSION
for /f "delims=," %%a in (f1.txt) do (
set foo=%%a
if !foo!=="media"
set var=!foo:"media"=aa"media"!
echo !foo! >> f2.txt)
你有两个选择来做这件事。您可以使用
FOR/F
命令读取文件,或者如果您只是编辑单行文件,则可以使用SET/P
命令
下面是单个批处理文件中的这两个示例
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%G in (sotemp.txt) do (
set "line=%%G"
set "foo=!line:"media"=aa"media"!"
echo !foo!
)
set /p "line="<sotemp.txt
echo %line:"media"=aa"media"%
pause
@echo关闭
延迟扩展
对于/F“delims=“%%G in(sotemp.txt)do(
设置“行=%%G”
设置“foo=!line:“media”=aa“media”!”
回声!福!
)
设置/p“line=“您有两个选项可以执行此操作。您可以使用FOR/F
命令读取文件,或者如果您只是编辑单行文件,则可以使用SET/P
命令
下面是单个批处理文件中的这两个示例
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%G in (sotemp.txt) do (
set "line=%%G"
set "foo=!line:"media"=aa"media"!"
echo !foo!
)
set /p "line="<sotemp.txt
echo %line:"media"=aa"media"%
pause
@echo关闭
延迟扩展
对于/F“delims=“%%G in(sotemp.txt)do(
设置“行=%%G”
设置“foo=!line:“media”=aa“media”!”
回声!福!
)
set/p“line=”您只能在批处理文件中使用set
命令进行字符串替换。但是如何找到“media”一词,然后我可以使用我的string+“media”替换它使用FOR/F
命令读取文件。使用SET
命令将FOR
变量分配给环境变量。然后使用另一个SET
命令进行字符串替换。编辑您的问题并用您的代码进行更新。然后删除您的评论您是说字符串“media”本身在一行上吗?您只能在批处理文件中使用SET
命令进行字符串替换。但是如何找到“media”一词,然后我可以使用字符串+“media”替换它使用FOR/F
命令读取文件。使用SET
命令将FOR
变量分配给环境变量。然后使用另一个SET
命令进行字符串替换。编辑您的问题并用您的代码进行更新。然后删除你的评论你是说字符串“media”本身在一行上吗?我不知道为什么,但它们似乎都不起作用,第一个不做任何事情,第二个只是在命令提示符下加载文件内容,同样在修复了我的初始代码后,正如你告诉我的,结果文件中只有第一个子字符串。还有一点我忘了提的是,长字符串由一堆子字符串组成,子字符串之间用逗号隔开,“media”就是其中的一个子字符串,这就是为什么我使用“delims=”,我确实根据您的描述用一个有限的示例测试了代码,它在我这方面很有效。如果看不到您的输入和输出的精确表示,我几乎不可能为您进行故障排除。输入(文件1):abcd“galaxy”,efghij“bar”,klmno“media”,pqrst“hero”输出(文件2):abcd“galaxy”,efghij“bar”,klmnoaa“media”,pqrst“hero”刮擦,第一个选项工作正常,这是我的一个愚蠢错误!谢谢你,伙计!我不知道为什么,但它们似乎都不起作用,第一个不起任何作用,第二个只是在命令提示符下加载文件内容,而且在按照您告诉我的那样修复初始代码之后,结果文件中只有第一个子字符串。还有一点我忘了提的是,长字符串由一堆子字符串组成,子字符串之间用逗号隔开,“media”就是其中的一个子字符串,这就是为什么我使用“delims=”,我确实根据您的描述用一个有限的示例测试了代码,它在我这方面很有效。如果看不到您的输入和输出的精确表示,我几乎不可能为您进行故障排除。输入(文件1):abcd“galaxy”,efghij“bar”,klmno“media”,pqrst“hero”输出(文件2):abcd“galaxy”,efghij“bar”,klmnoaa“media”,pqrst“hero”刮擦,第一个选项工作正常,这是我的一个愚蠢错误!谢谢你,伙计!