从原始cmd调用批处理文件可以正常工作,但是从.bat文件调用不可用

时间:2014-02-13 11:22:49

标签: windows batch-file cmd

-BASIC INFORMATION 我有一个名为E-Series的sourceforge项目,这使得某些编码任务更容易,在这个问题中,我将特别谈论" Easy Command Line"来自E系列。

-NOTES

- 再次,在标题中,从原始cmd调用批处理文件(通过转到Run> cmd访问它)确实有效,但是从设计为调用它的.bat文件调用它不会。

- 我正在调用的批处理文件中有参数。

-WHAT I' VE GOT

HERE是运行整个程序所需的所有文件(如果您需要更具体的信息,请下载它);请注意,当我尝试输入我的自定义命令(您可以通过键入帮助查看)时,例如" newfolder(name)"或" newfile(名称和扩展名)"失败,但从cmd调用它。如果你下载它,只需打开command.bat for cmd。

-WHAT I NEED

我需要一个.bat文件,可以"正确"使用参数调用批处理文件。

-WHERE HESPEN HAPPEN 来自.bat文件的批量文件

我在去这儿之前认真推荐你download my program,否则它可能对你没有任何意义。

据说我发现了错误发生的地方;

@echo off
title Easy Command Line 0.1 E-Alpha
color a
:: The script is completely formatted in NotePad++ I recommend you use that when you're viewing the
:: Source code :)
:: This program is in extreme alpha say... 0.1 Alpha (Versions are counted every tenth (0.1),) 
goto function_system_checkall
%clearcommand%
echo CONSOLE : Easy Command Line
echo CONSOLE : Type in "help" for a list of available commands. To enter batch mode
echo CONSOLE : type 'batchcommand'
:reset
set /p ecl_command="INPUT %cd%: "
if %ecl_command% == help goto help
if %ecl_command% == when echo %time%, %date%
if %ecl_command% == settings goto settings
if %ecl_command% == clear cls&goto reset
if %ecl_command% == clearscreen cls&goto reset
if %ecl_command% == cls cls&goto reset
if %ecl_command% == ping goto function_notyet
if %ecl_command% == checkall goto function_system_checkall
if %ecl_command% == navigate goto function_navigate
if %ecl_command% == debug @echo on
if %ecl_command% == disable_debug @echo off
call %ecl_command%

在调试模式下打开我的程序(@echo on)显示我输入" newfolder(name)"或" newfile(名称和扩展名)"导致输出:

INPUT D:\Projects\easycommandline: newfolder 14
14 was unexpected at this time.

D:\Projects\easycommandline>if newfolder 14 == help goto help
ECL crashed!
Press any key to relaunch ECL. It is recommended to go into debug mode (type debug)

详情SCREENSHOT HERE 这毫无意义。它对14 was unexpected at this time.有什么意义? 使用我的命令解析的方法首先,它检查输入是否对应于某些批处理文件命令,例如" clear,cls,list,when,help"但最后,有一个"电话"函数,因为外部程序旨在处理目录(和更多)操作,如创建新文件夹,新文件等。

从cmd

中调用批处理文件

正如我所说,从CMD调用批处理文件是FLAWLESS; enter image description here

我该如何解决这个问题?变得非常沮丧:(告诉我你是否需要更多信息

2 个答案:

答案 0 :(得分:2)

在可以包含空格或&字符的地方,您需要双引号:

不是这个:

if %ecl_command% == help goto help

但是,以及所有类似的行:

if /i "%ecl_command%" == "help" goto help

/ i使比较大小写不敏感。

答案 1 :(得分:1)

检查.bat文件的编码。当我使用UTF-8时,命令提示符显示错误:

C:\Users\***\Desktop>´╗┐cmd
'´╗┐cmd' is not recognized as an internal or external command,
operable program or batch file.

当我使用ANSI编码时,.bat文件按预期工作。