Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
Windows 使用批处理脚本在文件中的特定位置插入字符串_Windows_Batch File - Fatal编程技术网

Windows 使用批处理脚本在文件中的特定位置插入字符串

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

我是批处理脚本的新手,我有一个包含单词“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"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”刮擦,第一个选项工作正常,这是我的一个愚蠢错误!谢谢你,伙计!