小弟寫了一個小程式,執行時如果有排程會正常刪除 視窗會顯示:
成功: 排定的工作 "Work" 已成功刪除。
電腦已取消工作
但是沒有排程時 執行時 視窗顯示:
錯誤: 系統找不到指定的檔案。
工作並無排程
請問要如何將錯誤: 系統找不到指定的檔案。 這段拿掉!
有上網先找過資料了... 但實在是找不到只好來拜託各位的幫忙。
謝謝大家
附上一段請大家幫忙看一下
FOR /f %%I IN ('C:\Windows\System32\schtasks.exe /QUERY /FO LIST /TN "Work"') DO (
schtasks /f /delete /TN "Work" && echo 電腦已取消工作
goto home
)
echo 工作並無排程
goto home
你的程式流程邏輯有點詭異…… 懶得管~~ 就只看你的主要問題:
請問要如何將錯誤: 系統找不到指定的檔案。 這段拿掉!
你這問題不是 for
的問題 ( 看向發問標題~ ) , 而是「不想要顯示錯誤訊息」的問題。
基本上, 作業系統 Windows 有 stdin
、 stdout
和 stderr
這三個標準資料流:
stdin
: 標準輸入 (Standard Input) , 一般預設從鍵盤讀取。stdout
: 標準輸出 (Standard Output) , 一般預設列印至螢幕。stderr
: 標準錯誤 (Standard Error) , 一般預設列印至螢幕。stderr
這個,原因不知~ )
而 schtasks.exe
的錯誤訊息 錯誤: 系統找不到指定的檔案
, 通常會丟給 stderr
而列印至螢幕; 若不想要錯誤訊息顯示於螢幕上, 可用 2> nul
( 語意: 將輸出給 stderr
的資料流重新導向至 nul
) 這重新導向的語法; 細節請參閱 重新導向/Redirection 。
例如, 下面這命令就不會在螢幕上顯示錯誤訊息:
schtasks.exe /query /tn "\pathTo\nope" 2> nul
而若想在 for
內使用重新導向的語法, 須注意, 因為 >
為 win-cmd 的特殊字元 ( special command shell character ) , 需搭配 ^
( escape character, 微軟繁中:逸出字元
) 以避免 win-cmd 誤解。 例如:
for /f %G in ('schtasks.exe /query /tn "\pathTo\nope" 2^> nul') do echo %G
若是在 .bat
內:
for /f %%G in ('schtasks.exe /query /tn "\pathTo\nope" 2^> nul') do echo %%G
請善用 程式碼與語法高亮標記 - iT邦幫忙 的 Markdown ;
不然, 至少, 編輯區工具列, 有個 新增程式碼 (Ctrl-Alt-C)
能用。
( 程式碼區塊
亦可用以存放各種文字資料, 以方便他人閱覽。 )
iThelp-Markdown 的語法高亮之自動識別時常錯判, 建議用下面方式 (bat
) 指定語言:
```bat
echo hello, world
```