我编写了一个批处理脚本,提示用户输入并显示特定库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并不令人满意,因为他们使用了变通方法。
答案 0 :(得分:1)
这比看起来更有趣。为了明确起见,您不能在分号分隔的单行上写条件语句或任何其他复合语句。
这不应该那么难。使用sys.argv
作为参数和
getattr(lookup, "something")
代替你的
lookup.%input%
在一个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!"