東西在說...文件沒有刪除TCL
請記住,當我手動運行腳本時,但不是在通過任務計劃程序運行腳本時,它會按預期工作。
我有一個TCL腳本,應該檢查一個文件是否存在於網絡驅動器上,如果存在則刪除它。我這樣做:
if {[file exists X:/path/to/file.txt]} {
log_output "Deleting file X:/path/to/file.txt"
file delete -force X:/path/to/file.txt
}
我注意到,通過任務計劃程序運行時,文件永遠不會被刪除。於是我又進行了一次檢查,試圖獲得更多信息。
if {[file exists X:/path/to/file.txt]} {
log_output "File X:/path/to/file.txt NOT DELETED!"
} else {
log_output "File X:/path/to/file.txt DELETED!"
}
我的輸出是:
Deleting file X:/path/to/file.txt
File X:/path/to/file.txt DELETED!
第二行確認爲已刪除的存在檢查失敗的文件實際上是報道。最後,我運行一個生成新文件的命令。
exec myProgram --outFile X:/path/to/file.txt
再一次,奇怪的是當我手動運行這個腳本,它工作得很好。然而,當我把它設置爲通過任務調度程序(使用Win7的),舊的文件不會被刪除,即使輸出日誌顯示它是運行:
Deleting file X:/path/to/file.txt
File X:/path/to/file.txt DELETED!
當我檢查文件的日期和時間戳它總是從我上次執行手動運行開始。我認爲這是更多的權限錯誤,但這沒有意義。爲什麼它會報告爲刪除並仍然保持不變?
爲了徹底,我嘗試了一些其他的解決方法。相反,通過命令寫一個文件到網絡驅動器,我試圖在本地寫它:
if {[file exists C:/path/to/file.txt]} {
log_output "Deleting file C:/path/to/file.txt"
file delete -force C:/path/to/file.txt
}
if {[file exists C:/path/to/file.txt]} {
log_output "File C:/path/to/file.txt NOT DELETED!"
} else {
log_output "File C:/path/to/file.txt DELETED!"
}
exec myProgram --outFile C:/path/to/file.txt
然後將其複製到網絡驅動器:
file copy -force C:/path/to/file.txt X:/path/to/file.txt
file copy -force C:/path/to/file.txt X:/path/to/file1.txt
我得到:
Deleting file X:/path/to/file.txt
File X:/path/to/file.txt DELETED!
Deleting file C:/path/to/file.txt
File C:/path/to/file.txt DELETED!
但是果然,舊文件仍然存在,並且新文件'file1.txt'不存在...
A增益,手動運行總是會導致成功。
調度任務中的文件映射很困難。使用UNC路徑。 ('/ machine/share/path/to/file.txt') –
是的,我也試過。相同的結果。按預期手動運行。即使輸出日誌將文件顯示爲已刪除,由Task Scheduler運行時仍然失敗。 – radensb
計劃任務是否有權刪除該文件? –