批處理文件雙擊運行成功,程序調用卻運行失敗解決方案


問題描述:

批處理文件ftp.bat,包含下面內容:

ftp -s:ftp.txt

其中的ftp.txt是一段ftp命令,如下:

open ftp.site.com
name
password
quote PASV
put C:\a.txt
put D:\b.txt
quit

 以上意思是上傳本地C:\a.txtD:\b.txt兩個文件到目標ftp站點

雙擊和使用Windows任務計划都能執行成功

但是通過程序運行卻失敗

 

Process p = Process.Start(path);
                if (p != null)
                {
                    p.WaitForExit();
                    p.Close();
                }

 

 調試得到下面的信息

 

System.InvalidOperationException

通過分析:這是因為ftp -s:ftp.txt命令中用了相對路徑,而Process.Start啟動的程序會默認取當前程式所在路徑下的ftp.txt,

於是就會出現找不到文件的情況

有三個方案:

1.ftp.bat文件中換絕對路徑,比如ftp.txt文件在C盤下,則改寫為ftp -s:"C:\ftp.txt"(這個地方最好加雙引號,否則路徑中有空格就會出錯)

2.使用ProcessStartInfo 來執行 Process.Start,通過ProcessStartInfo 指定程式的工作路徑(WorkingDirectory)

3.將ftp.txt拷貝到當前程式的根目錄下

還有一個注意點:

如果應用程序訪問被拒絕,要給a.txt,b.txt和ftp.txt增加相應權限

整個解決過程就是這樣,希望能幫上同遇此問題的朋友


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM