我将批处理脚本转换为Python。我被困在这里:
setlocal EnableDelayedExpansion
for /F %%x in ('dir /B/D %OPATH%') do (
set "FILENAME=!FILENAME! %%x"
)
我不明白
set "FILENAME=!FILENAME! %%x"
确实
答案 0 :(得分:4)
通常,%var%
会检索var
的值。
在code block
(带括号的系列行)中,当%var%
语句调用块(var
或者for
时,if
将替换为var
的值遇到了run-time
},而不是delayedexpansion
的值,因为它因块的操作(%var%
值)而变化。
调用parse-time
后,!var!
仍会返回原始run-time
值,但filename
会返回%%x
值,因此在这种情况下,随着循环的进行,ggplot
将每个值plotly
附加到其上。 (注意:批处理变量中有~8180个字符的限制[实际上,变量名的长度为8191])
答案 1 :(得分:2)
for循环将所有找到的dir条目连接到一个字符串。
BTW / d的/ B覆盖/ D,因此可以省略。
此外,/ f选项"tokens=1 delims= "
的默认值将截断带有空格的文件名。
Magoo解释了其他问题。
答案 2 :(得分:1)
批处理脚本生成一个空格分隔的OPATH目录文件名列表。使用Python glob
来获得与列表相同的东西是很容易的。
import os
import glob
dlist = glob.glob(os.environ['OPATH'] + os.sep + '*')
这将生成文件名列表。目录名称末尾会有一个os.sep。对于Python代码来说,这可能比使用空格分隔符的单个字符串更容易处理。
如果您必须有一个以空格分隔的字符串,则可以轻松地将它们连接起来。
dstring = ' '.join(dlist)