Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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
调度器-C#App-Batch-FTP-手动工作,但不在调度器中_C#_Batch File_Ftp_Task_Scheduler - Fatal编程技术网

调度器-C#App-Batch-FTP-手动工作,但不在调度器中

调度器-C#App-Batch-FTP-手动工作,但不在调度器中,c#,batch-file,ftp,task,scheduler,C#,Batch File,Ftp,Task,Scheduler,我有一个C#应用程序,它执行批处理脚本,将ftp命令写入文本文件,然后执行文本文件。它在手动执行时工作,但在从调度程序(如Windows任务调度程序)执行时不工作(不是我最终将使用的调度程序,而是用于调试目的的调度程序) 具体地说,当从调度程序运行时,脚本会执行,但参数不会传递,并且ftp脚本文件在调用之前不会被覆盖,因此它只执行上一个作业中剩下的任何脚本。但是,它确实会按预期覆盖记录ftp会话的.txt报告。同样,当手动运行时,一切正常 安全策略防止对权限进行大量修改,但我为作业帐户授予了对所

我有一个C#应用程序,它执行批处理脚本,将ftp命令写入文本文件,然后执行文本文件。它在手动执行时工作,但在从调度程序(如Windows任务调度程序)执行时不工作(不是我最终将使用的调度程序,而是用于调试目的的调度程序)

具体地说,当从调度程序运行时,脚本会执行,但参数不会传递,并且ftp脚本文件在调用之前不会被覆盖,因此它只执行上一个作业中剩下的任何脚本。但是,它确实会按预期覆盖记录ftp会话的.txt报告。同样,当手动运行时,一切正常

安全策略防止对权限进行大量修改,但我为作业帐户授予了对所有受影响文件夹的完全权限,并为作业帐户添加了“作为批处理文件登录”权限。无需向C#应用程序传递任何参数。如有任何建议,将不胜感激

C#代码:

批处理脚本:

Set DIR=%~1
Set SUBDIR=%~2
Set SWITCH=%~3

cd "%DIR%Scripts\

ECHO USER user>FtpScript.txt
ECHO pass>>FtpScript.txt
ECHO lcd "%DIR%FilesToFtp\%SUBDIR%\%SWITCH%">>FtpScript.txt
ECHO lcd "%DIR%FilesToFtp\%SUBDIR%\%SWITCH%"\>>FtpScript.txt

IF "%SWITCH%"=="ONE" ECHO QUOTE SITE LRECL=100 RECFM=FB>>FtpScript.txt
IF "%SWITCH%"=="TWO" ECHO QUOTE SITE LRECL=200 RECFM=FB>>FtpScript.txt
IF "%SWITCH%"=="THREE" ECHO QUOTE SITE LRECL=300 RECFM=FB>>FtpScript.txt

ECHO MPUT "*.*">>FtpScript.txt
ECHO(>>FtpScript.txt

REM other commands, etc...

FTP -d -n -s:"%DIR%Scripts\FtpScript.txt" server > "%FPATH%Reports\%SUBDIR%_%SWITCH%_log.txt"

EXIT 0

提前感谢。

是否收集批处理文件输出,以便检查是否有错误消息?为什么不从C代码中创建ftp脚本,以更好地控制错误?(如果在写入
FtpScript.txt
时出现任何错误,您将得到一个异常。我最终删除了C#code的ftp脚本逻辑,这解决了问题。我可能会永远被计划批处理文件的神秘性困扰,但谢谢@MartinPrikryl。
Set DIR=%~1
Set SUBDIR=%~2
Set SWITCH=%~3

cd "%DIR%Scripts\

ECHO USER user>FtpScript.txt
ECHO pass>>FtpScript.txt
ECHO lcd "%DIR%FilesToFtp\%SUBDIR%\%SWITCH%">>FtpScript.txt
ECHO lcd "%DIR%FilesToFtp\%SUBDIR%\%SWITCH%"\>>FtpScript.txt

IF "%SWITCH%"=="ONE" ECHO QUOTE SITE LRECL=100 RECFM=FB>>FtpScript.txt
IF "%SWITCH%"=="TWO" ECHO QUOTE SITE LRECL=200 RECFM=FB>>FtpScript.txt
IF "%SWITCH%"=="THREE" ECHO QUOTE SITE LRECL=300 RECFM=FB>>FtpScript.txt

ECHO MPUT "*.*">>FtpScript.txt
ECHO(>>FtpScript.txt

REM other commands, etc...

FTP -d -n -s:"%DIR%Scripts\FtpScript.txt" server > "%FPATH%Reports\%SUBDIR%_%SWITCH%_log.txt"

EXIT 0