我看过建议的类似问题虽然有用,但实际上并不符合我的问题,而且我仍然在苦苦挣扎。
我正在使用批处理文件来运行一系列python文件,其中一个python脚本返回一个变量,以便在以后的脚本中用作参数(它必须导出到控制台,因为它也用作可执行文件中的参数。)
批处理文件如下所示:
@echo off
@title AutoStats
set raw_dir ='raw_directory'
set today_dir ='today_directory'
set archive_dir='archive_directory'
set error_file='error_directory'
set DateEstate='dE'
set OTQ_File='OTQ_File'
cd C:\dev\OTQtxt
for /f "delims=" %%a in ('get_date.py') do set $date=%%a
python create_csv.py %$date% %raw_dir% %archive_dir% %error_file%
pause
python脚本如下所示:
from sys import argv
date, raw_dir, today_dir, archive_dir, error_file = argv[1:]
print date
print raw_dir
print today_dir
print archive_dir
print error_file
使用argv[1:]
的原因是因为我不想将脚本名称用作参数
将来显然会做的不仅仅是这个,这只是为了测试我是否可以获得参数。
错误与标题所述相同。只有在从批处理文件运行它时才会发生这种情况,如果我从powershell运行它并自己输入参数然后它就可以工作。
我觉得奇怪的是,在powershell中输入参数时,脚本运行正常,当使用.bat中设置的参数时,它会返回错误。
任何人都可以解释为什么会这样。我直到现在才使用批处理文件,所以这可能只是一个简单的错误。
答案 0 :(得分:1)
虽然Ffisegydd指出的问题是正确的,但是使用不同数量的参数导致问题发生的真正错误是在批处理文件中设置参数。
对于前两个set
行,我在参数名称后添加了一个空格:
set today_dir ='today_directory'
应该是:
set today_dir='today_directory'