【问题标题】:Changing a line in a cfg file with a batch file使用批处理文件更改 cfg 文件中的一行
【发布时间】:2018-12-06 17:18:10
【问题描述】:

我在 Windows 上,正在尝试使用以下批处理文件:

@echo off &setlocal
set "search=false); // disable U"
set "replace=true); // disable U"
set "textfile=C:\Program Files (x86)\Mozilla Firefox\mozilla.cfg"
call jrepl.bat "%search%" "%replace%" /f "%textfile%" /o -
pause

更改配置文件中的一行。当我运行文件时,它说

'jrepl.bat' is not recognized as an internal or external command.

我的批处理文件和 jrepl.bat 都保存到桌面。如何让我的批次找到 jrepl?

【问题讨论】:

  • 您没有以管理员身份运行批处理脚本,是吗?如果 jrepl.bat 与您所说的脚本位于同一目录中,那么这是您发布的代码无法正常工作的唯一可能原因。
  • 要么确保jrepl.bat所在的目录在PATH变量中,要么在命令中指定jrepl.bat的完整路径。 CALL "C:\path\to\jrepl\dir\jrepl.bat"
  • 我会写 call "%~dp0jrepl.bat" 以确保找到它,因为它与您的批处理文件放在同一目录中,正如您所声称的那样......
  • @SomethingDark 我以管理员身份运行脚本。 @lit 我使用了完整路径并得到了这个错误JScript runtime error in Search regular expression: Syntax error in regular expression
  • ) 通常是正则表达式中的组字符,因此您可能需要使用反斜杠对其进行转义以使其成为文字,即set "search=false\); // disable U"

标签: batch-file cmd windows-10 jrepl


【解决方案1】:

使用此批处理文件代码独立于执行批处理文件的当前目录:

@echo off
if not exist "%~dp0jrepl.bat" goto :EOF
if not exist "%ProgramFiles(x86)%\Mozilla Firefox\mozilla.cfg" goto :EOF

call "%~dp0jrepl.bat" "search=false\); // disable U" "search=true); // disable U" /F "%ProgramFiles(x86)%\Mozilla Firefox\mozilla.cfg" /O -

请参阅How to run tree command from current directory? 上的答案以及那里引用的答案,详细了解为什么 Windows 命令处理器在以管理员身份运行批处理文件以获得对 Mozilla Firefox 程序文件夹中的文件的写访问权时未找到jrepl.bat

) 在正则表达式搜索字符串中有特殊含义。必须使用反斜杠对其进行转义,才能将其解释为搜索字符串中的文字字符。 )在正则表达式中没有特殊含义替换字符串,所以在替换字符串中不需要转义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多