Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
String 查找字符串并替换批处理文件中的特定字母_String_Search_Batch File - Fatal编程技术网

String 查找字符串并替换批处理文件中的特定字母

String 查找字符串并替换批处理文件中的特定字母,string,search,batch-file,String,Search,Batch File,我需要创建一个autosys作业来触发一个批处理文件,该批处理文件将找到一个特定的字符串,然后替换接下来的4个字符 例如,如果文件(有多行)包含以下内容,并且我正在搜索播放的内容 那只疯狐狸从老藤上跳了起来 踢足球 我应该用“INFA”代替“socc” 我是批处理文件的新手,我的主管一直坚持我只使用批处理文件。任何帮助都将不胜感激 谢谢, Joy为自己准备一份for的副本,并从批处理文件中调用它 sed -e 's/socc/INFA/g' inputFileName > outputFi

我需要创建一个autosys作业来触发一个批处理文件,该批处理文件将找到一个特定的字符串,然后替换接下来的4个字符

例如,如果文件(有多行)包含以下内容,并且我正在搜索播放的内容

那只疯狐狸从老藤上跳了起来 踢足球

我应该用“INFA”代替“socc”

我是批处理文件的新手,我的主管一直坚持我只使用批处理文件。任何帮助都将不胜感激

谢谢, Joy

为自己准备一份for的副本,并从批处理文件中调用它

sed -e 's/socc/INFA/g' inputFileName > outputFileName

我有时使用这个:sar.bat

::Search and replace
@echo off
if "%~3"=="" (
echo.Search and replace
echo Syntax: 
echo "%~nx0" "filein.txt" "fileout.txt" "regex" "replace_text" [first]
echo.
echo.EG: change the first time apple appears on each line, to orange
echo."%~nx0" "my text old.txt" "my text changed.txt" "apple" "orange" first
echo.
echo.People that are familiar with regular expressions can use some:
echo.
echo.Change every line starting from old (and everything after it^) to new
echo."%~nx0" "my text old.txt" "my text changed.txt" "old.*" "new"
echo.
echo.If [first] is present only the first occurrence per line is changed
echo.
echo.To make the search case sensitive change
echo.IgnoreCase= from True to False
echo.
pause
goto :EOF
)
if "%~5"=="" (set global=true) else (set global=false)
set s=regex.replace(wscript.stdin.readall,"%~4")
 >_.vbs echo set regex=new regexp
>>_.vbs echo regex.global=%global%
>>_.vbs echo regEx.IgnoreCase=True
>>_.vbs echo regex.pattern="%~3"
>>_.vbs echo wscript.stdOut.write %s%
cscript /nologo _.vbs <"%~1" >"%~2"
del _.vbs
::搜索并替换
@回音
如果“%~3”==”“(
搜索并替换
回显语法:
echo“%~nx0”“filein.txt”“fileout.txt”“regex”“replace_text”[第一个]
回声。
将苹果第一次出现在每行上的时间改为橙色
echo.“%~nx0”“我的文本旧.txt”“我的文本已更改.txt”“苹果”“橙色”首先
回声。
echo。熟悉正则表达式的人可以使用一些:
回声。
将每一行从旧开始(以及之后的所有内容^)更改为新
回显“%~nx0”“我的文本旧.txt”“我的文本已更改.txt”“旧。*”“新”
回声。
回显。如果[first]存在,则每行的第一次出现将被更改
回声。
echo。使搜索区分大小写进行更改
echo.IgnoreCase=从真到假
回声。
暂停
后藤:EOF
)
如果“%~5”==”(设置全局=true)否则(设置全局=false)
set s=regex.replace(wscript.stdin.readall,“%~4”)
>_.vbs echo set regex=新regexp
>>_.vbs echo regex.global=%global%
>>_.vbs echo regEx.IgnoreCase=True
>>_.vbs echo regex.pattern=“%3”
>>_.vbs echo wscript.stdOut.write%s%
cscript/nologo_u2;.vbs“%~2”
del_.vbs

很明显,您正在搜索结尾带有空格的“播放”,尽管您的问题有点模糊

请参阅执行正则表达式搜索和替换的my。它可以在XP以后的任何现代版本的Windows上运行,并且不需要安装任何第三方可执行程序

使用REPL.BAT:

type "yourFile.txt"|repl "played ...." "played INFA" >"yourFile.txt.new"
move /y "yourFile.txt.new" "yourFile.txt" >nul
输出:

the mad fox jumped of the old vine and played INFAer.

必须将以前的代码插入到处理整个文件的循环中。我把这部分留给你做练习…

可能的副本不一定是SOCC。播放后出现的任何4个字母都应替换为Windows命令行中没有搜索和替换工具。下载
sed
或编写一个shell脚本。你应该在问题中这样说,而不是在评论中这样说:“我应该用INFA替换“played”之后出现的任何4个字母。”。无论如何,您应该以这种方式修改您的问题…谢谢您的建议,但根据clind政策,我不允许使用任何外部实用程序…另一种选择是使用powershell或vbscript,您可以从批处理文件中调用它们。我调整“search=text to find”(包括末尾的空格),我还调整“replace=”(无意义),我得到了完美的结果,在“新文件”中删除了“要查找的文本”。谢谢你,先生。
@echo off
setlocal EnableDelayedExpansion

set "search=played "
set replacement=INFA
set numChars=4

set line=the mad fox jumped of the old vine and played soccer. 

rem The characters after the equal-signs are Ascii-254
for /F "tokens=1* delims=■" %%a in ("!line:%search%=■!") do (
   set "rightPart=%%b"
   set "line=%%a%search%%replacement%!rightPart:~%numChars%!"
)

echo !line!
the mad fox jumped of the old vine and played INFAer.