Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 批处理中%的文字用法_Python_Cmd - Fatal编程技术网

Python 批处理中%的文字用法

Python 批处理中%的文字用法,python,cmd,Python,Cmd,我有一个批处理文件,其中包含使用输出模板>%(名称)s的python脚本 当我运行它时,cmd认为它是一个var,而igoners是% 所以 变成 youtube-dl.py -b -o (uploader)s-(title)s-(id)s.(ext)s 如何说服cmd不处理它并将其按原样传递给python?将%替换为%%: youtube-dl.py -b -o %%(uploader)s-%%(title)s-%%(id)s.%%(ext)s (请注意,与Unix不同,双引号在W

我有一个批处理文件,其中包含使用输出模板>%(名称)s的python脚本 当我运行它时,cmd认为它是一个var,而igoners是% 所以

变成

youtube-dl.py -b  -o (uploader)s-(title)s-(id)s.(ext)s  
如何说服cmd不处理它并将其按原样传递给python?

将%替换为%%:

youtube-dl.py -b  -o %%(uploader)s-%%(title)s-%%(id)s.%%(ext)s

(请注意,与Unix不同,双引号在Windows命令行上的作用不大。)

如果不希望cmd.exe解释
%
字符,则应在其前面加上转义字符:

c:\> set qwert=55
c:\> echo %qwert%
55
c:\> echo ^%qwert^%
%qwert%

这里有一个替代建议,你不必像遇到的那样去干涉cmd的“怪癖”。将普通文本参数传递给脚本,然后在脚本中执行模板设置。

它们执行模板设置,但不会停止环境变量的扩展。如果不是这样的话,你怎么能在命令行中包含可变内容呢?我怀疑youtube-dl.py不是他的脚本(我使用的是同名的东西)。但是这个建议仍然很好——不要使用批处理,而是使用您最喜欢的脚本语言。由于系统中已经有Python,请使用另一个Python脚本,例如my-youtube-dl.py,设置对youtube-dl的调用。感谢您提出的这个问题,帮助我解决了在命令行url目标中放置%20时出现的jenkins.bat问题!
c:\> set qwert=55
c:\> echo %qwert%
55
c:\> echo ^%qwert^%
%qwert%