批量执行 - 系统找不到指定的文件

时间:2017-08-28 09:12:27

标签: batch-file

我的批处理文件正在运行以下代码:

[...]
copy nul %BaseDir%\bin\MyIniFile.ini

echo [OEMINFO]                               >> %BaseDir%\bin\MyIniFile.ini
echo OEMTextColor=                           >> %BaseDir%\bin\MyIniFile.ini
echo OEMBackGroundColor=                     >> %BaseDir%\bin\MyIniFile.ini
echo OEMNoStartupLogos=T                     >> %BaseDir%\bin\MyIniFile.ini
echo OEMInfoGreetings=                       >> %BaseDir%\bin\MyIniFile.ini
echo OEMIcon=<BD>\config\Default\cad.ico     >> %BaseDir%\bin\MyIniFile.ini
[...]

我总是得到“系统找不到指定的文件”错误,但是正确创建了ini文件,除了最后一个条目之外的所有条目(OEMIcon = \ config \ BormGroupERP \ Default \ cadt.ico)。

起初我用

尝试了
echo "OEMIcon=<BD>\config\Default\cad.ico"    >> %BaseDir%\bin\MyIniFile.ini

哪个有效(没有错误信息)但是我的ini文件中有引号,这是不好的......

另外

echo [OEMIcon=<BD>\config\Default\cad.ico]    >> %BaseDir%\bin\MyIniFile.ini

不起作用(再次出现相同的错误)。

我还尝试将字符串存储在变量(带引号)中,然后删除引号。

set OemIconData="OEMIcon=<BD>\config\Default\cad.ico" 
OemIconData=%OemIconData:~1,-1%

但是当我尝试删除引号时发生了同样的错误。

我现在没有想法了。为什么会出现这种错误?我该如何预防?

1 个答案:

答案 0 :(得分:0)

<>是具有自己保留用途的特殊字符。

<是一个输入重定向器,它会将 后的所有内容发送到之前的命令中。

>是一个输出重定向器,它会将之前的发送到之后的位置/文件/命令

目前,cmd.exe执行如下:

  • 获取BD>\config\Default\cad.ico >> %BaseDir%\bin\MyIniFile.ini
  • 的命令结果
  • 回应echo OEMIcon=<BD进入\config\Default\cad.ico >> %BaseDir%\bin\MyIniFile.ini

我们需要转义特殊字符,以便cmd忽略它的用法,在其前面添加^。你的命令应该是:

echo OEMIcon=^<BD^>\config\Default\cad.ico     >> %BaseDir%\bin\MyIniFile.ini