条件语句使用" cmd python -c" - 我怎么能通过`if`?

时间:2016-06-01 11:52:00

标签: python batch-file cmd

我编写了一个批处理脚本,提示用户输入并显示特定库ExternalLibrary的帮助。但是,我在代码示例下面收到错误。

@echo off
set input=NUL
set /p input="Help: "

python -c "import sys; sys.path.append('D:\\lib'); import ExternalLibrary;lookup = ExternalLibrary.Presentation_control();if ('%input%' == 'NUL'):&    help(lookup.%input%)&else:&    help(lookup)"

可以通过将if语句替换为:

来实现工作版本
help(lookup.%input%)

if

开头的列出错
C:\Users\usah>Lib_Help.cmd
Help:
  File "<string>", line 1
    import sys; sys.path.append('D:\\lib'); import ExternalLibrary;lookup = ExternalLibrary.Presentation_control();if ('NUL' == 'NUL'):&    help(lookup.NU
L)&else:&    help(lookup)
                                                                                                                               ^
SyntaxError: invalid syntax

<子>的脚注

<子> 1。我要注意是否应将&\n;作为换行符

<子> 2。这些related answers并不令人满意,因为他们使用了变通方法。

1 个答案:

答案 0 :(得分:1)

只能在由分号

分隔的单行上写入简单语句

这比看起来更有趣。为了明确起见,您不能在分号分隔的单行上写条件语句或任何其他复合语句。

Simple statements

Compound statements

您的选择

将所有内容重写为Python

这不应该那么难。使用sys.argv作为参数和

getattr(lookup, "something")

代替你的

lookup.%input%

sys.argv

getattr

使用换行符

在一个cmd行上编写多行Python脚本。您可以使用!LF! special。

来完成
@echo off
setlocal enableDelayedExpansion
set LF=^


set input=NUL
set /p input="Help: "


python -c "import sys!LF!sys.path.append('D:\\lib')!LF!import ExternalLibrary!LF!lookup = ExternalLibrary.Presentation_control()!LF!if ('%input%' == 'NUL'):!LF!    help(lookup)!LF!else:!LF!    help(lookup.%input%)!LF!"