从批处理文件中查找和替换不起作用

时间:2012-10-24 15:09:11

标签: batch-file replace find

我正在尝试查找并替换批处理文件中的字符串值但存在问题。我让用户运行批处理文件并询问用户1)文件所在的驱动器2)TEST父文件夹中文件夹的名称是什么3)新服务器的名称是什么。我希望批处理文件在名为importer.config的文件中查找,并用用户输入的任何内容替换名为server_name的值。这就是我所拥有的:

@echo off
SET drive=
SET /P drive=Please enter the drive:

SET folder=
SET /P folder=Enter name of folder desired:

SET server=
SET /P server=Enter name of new server:

@echo off > newfile.txt
setLocal EnableDelayedExpansion

if exist newfile.txt del newfile.txt

for /f "tokens=* delims= " %%a in (%drive%\test\%folder%\importer.config) do (
set str=%%a
set str=!str:server_name=%server%!
echo !str! >> newfile.txt
)
del importer.config
rename newfile.txt importer.config

pause

每次运行此命令时,cmd提示符都会显示: 系统找不到指定的文件c:\ test \ users_input_they_entered \ importer.config。问题是文件存在,所以试图理解我所缺少的内容以及为什么它找不到存在的文件。

然后它还说“找不到c:\ windows \ system32 \ importer.config”,这也不确定为什么会发生这种情况

我搜索了stackoverflow,但无法在任何帮助下解决这个问题。

1 个答案:

答案 0 :(得分:1)

你正在使用for循环推动你的运气。

像sed这样的工具可以很好地运作。

如果你看一下这篇文章,他们就有了你可以使用的vbscript实现 Is there any sed like utility for cmd.exe

set input_file=importer.config
set output_file=temp.config
set new_server_name=server1984

cscript /Nologo sed.vbs s/server_name/%new_server_name%/ < %input_file% > %output_file%