0

我正在尝试在批处理文件中查找和替换字符串的值但遇到问题。我让用户运行批处理文件,它询问用户 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上进行了搜索,但在任何帮助下都无法弄清楚。

4

1 回答 1

1

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

像 sed 这样的工具会很好用。

如果你看这篇文章,他们有一个 vbscript 实现,你可以使用 cmd.exe 是否有类似 sed 的实用程序

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%
于 2012-11-10T18:15:59.830 回答