我时间紧迫,我希望创建一个非常简单的批处理脚本:
1)重命名同一目录中另一个文件中的字符串(已知文件名) 示例:将“[replace_me_with_path_to_second_file]”替换为first_file.txt中的“current_working_directory / second_file.txt”
2)打开/执行该文件“first_file.txt”
3)关闭
提前致谢!
答案 0 :(得分:0)
如果您对正则表达式感到满意,这对于sed来说是一个完美的工作。 Sed使用'/'作为要查找的表达式与其替换之间的分隔符,因此您应该转义文件路径中的任何斜杠。要使用您的示例:
sed -i 's/replace_me_with_path_to_second_file/current_working_directory\/second_file.txt/' first_file.txt
答案 1 :(得分:0)
感谢Alberge,我希望找到一个不需要sed的解决方案,因为这个批处理文件将在windows环境中的下载文件中使用,以简化配置。但看起来我必须打包它:http://gnuwin32.sourceforge.net/packages/sed.htm
至于其他人,协作问题/答案目录的整个前提意味着提出问题的人是: 1)无法找到答案 2)时间紧迫,正在寻找那些在主题方面有更多经验或知识的人的建议。
批评我说我问一个问题因为我受时间限制有点粗鲁。
原来,sed依赖项(dll)有点重,所以我发现这个有用且紧凑的vbs脚本来模拟s / r - Is there any sed like utility for cmd.exe
我会在这里重新发布:
Dim pat, patparts, rxp, inp
pat = WScript.Arguments(0)
patparts = Split(pat,"/")
Set rxp = new RegExp
rxp.Global = True
rxp.Multiline = False
rxp.Pattern = patparts(1)
Do While Not WScript.StdIn.AtEndOfStream
inp = WScript.StdIn.ReadLine()
WScript.Echo rxp.Replace(inp, patparts(2))
Loop
我完成的批处理脚本:
@echo off
set full_path=%CD%\file_1.txt
set input_file=file_2.txt
set output_file=file_2.txt
set str_search=FIND_ME
set str_replace=%full_path%
if not exist "%full_path%" (echo this file does not exist...)&goto :eof
cscript //nologo sed.vbs s/%str_search%/"%str_replace%"/ <%input_file% >%output_file%
像魅力一样工作:)