【发布时间】:2014-04-05 06:07:11
【问题描述】:
在 VS2012 的 Windows 7 上,我设置了一个外部工具来调用一个 bat 文件(我们称之为 BatA.bat)。在外部工具中,我将 $(ItemDir) 作为唯一的参数传递,并且我也有 $(ItemDir) 的初始目录。
在 BatA.bat 中,调用运行 BatB.bat,如下所示:
call "%1BatB.bat"
此命令调用 BatB.bat 会在输出窗口中产生以下结果:
'rem' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
你好
BatB.bat 代码如下:
rem ***Bat B***
@echo off
echo.
echo hello
奇怪的是,尽管有错误消息,但 BatB.bat 确实运行并完美执行!
我只是不明白为什么我首先在调用 BatB.bat 时收到错误消息...
BatA.bat 和 BatB.bat 都在同一个目录中。我尝试在调用 BatB.bat 时对路径进行硬编码,并在调用 BatB.bat 之前对 bat 目录执行 cd,但我仍然收到相同的错误。
【问题讨论】:
-
Dude... 所以我在 Visual Studio (BatB.txt) 中创建了一个文本文件,然后在解决方案资源管理器中将其重命名为 BatB.bat。在成为 bat 文件之前它首先是一个 txt 文件这一事实导致了上面详述的错误(我能够复制这种行为)。如果我最初创建 bat 文件并将其命名为 BatB.bat - bingo bango - 问题就解决了。所以总结一下...如果将.txt文件转换为.bat文件,bat文件的第一行会失败,但后面的所有行都会执行。
-
这是因为它保存了一个字节顺序标记(BOM)来识别编码。编辑文件时使用文件菜单的高级保存选项,然后选择“西欧 (Windows) - 代码页 1252”,然后保存。 (这是在 Win7 上打开现有批处理文件时 VS 给我的默认代码页。)
标签: batch-file visual-studio-2012 windows-7 command-line-tool