1. 程式人生 > >Win2003批處理單獨執行可以,加入任務計劃無法執行

Win2003批處理單獨執行可以,加入任務計劃無法執行

我的環境介紹:
win2003
執行--\172.16.6.218
訪問另外一臺sql備份資料夾並且複製到本地E盤,並且刪除3天前的備份資料,並且使用的命令(已經可以執行)如下:

@echo off
cd /d "E:\WMS-bak"
forfiles /p E:\WMS-bak /s /m *.bak /d -3 /c "cmd /c del @path"
net use \172.16.6.218\g\MSSQL11.MSSQLSERVER\MSSQL\Backup password /user:nameadmin
copy /z \172.16.6.218\g\MSSQL11.MSSQLSERVER\MSSQL\Backup E:\WMS-bak
exit

解析命令:
1)cd 命令簡單 不會的問問百度吧哈哈哈。
2)forfiles 命令你不會???你確定不會???

forfiles命令:
forfiles [/p Path ] [/m SearchMask ] [/s ] [/c Command ] [/d [{+ | - }] [{MM / DD / YYYY | DD }]]
引數列表
/p Path
指定Path ,表明要從哪裡開始搜尋。預設的資料夾是當前工作目錄,該目錄通過鍵入句號(.) 指定。
/m SearchMask
按照SearchMask 搜尋檔案。預設的SearchMask 是.
/s
指示forfiles 在子目錄中搜索。
/c Command
在每個檔案上執行指定的Command 。帶有空格的命令字串必須用引號括起來。預設的Command 是"cmd /c echo @file" 。
/d [{+ | - }] [{MM / DD / YYYY | DD }]
選擇日期大於或等於(+ )(或者小於或等於(- ))指定日期的檔案,其中MM / DD / YYYY 是指定的日期,DD 是當前日期減去DD 天。如果未指定+ 或- ,則使用+ 。DD 的有效範圍是0 - 32768。
/?
在命令提示符下顯示幫助。
刪除三天前的檔案
forfiles /p i:/serverbak/2005 /s /m .

/d -2 /c "cmd /c del @file"
/p 指定的路徑
/s 包括子目錄
/m 查詢的檔名掩碼
/d 指定日期,有絕對日期和相對日期, 此處-7指當前日期 的7天前
/c 執行的命令列 表示為每個檔案執行的命令。命令字串應該用雙引號括起來。
預設命令是 "cmd /c echo @file"。下列變數
可以用在命令字串中:
@file - 返回檔名。
@fname - 返回不帶副檔名的檔名。
@ext - 只返回檔案的擴充套件。
@path - 返回檔案的完整路徑。
@relpath - 返回檔案的相對路徑。
@isdir - 如果檔案型別是目錄,返回 "TRUE"; 如果是檔案,返回 "FALSE"。
@fsize - 以位元組為單位返回檔案大小。
@fdate - 返回檔案上一次修改的日期。
@ftime - 返回檔案上一次修改的時間。
示例
要列出驅動器 C: 上的所有批處理檔案,請鍵入:
forfiles /p c:/ /s /m*.bat /c"cmd /c echo @file is a batch file"

3)net use 命令 這個命令是個重點,我任務計劃本來沒有這條,增加這條就可以正常運行了。主要win2003任務計劃訪問共享資料夾的時候,需要增加命令列訪問(雖然我增加了對映本地Z盤,可是還是不成功)可能是系統機制問題。password和nameadmin是你訪問另外一臺伺服器的賬號和密碼。安全點我就不放上去了,加粗下。
4)copy命令簡單 不會的問問百度吧哈哈哈。
5)exit 這個命令不會?那你還是別玩批處理了。
千萬別噴我,主要能看到這篇文章的都是研究很久了對上面幾個簡單命令都有所瞭解的人才看的。小白就繞道吧 哈哈哈

任務計劃終於運行了:查詢了很多資料沒有一條能解決問題的,終於搞定了。
正常執行條件:
1、首先確定使用者是否為管理員使用者,當然很多人現在使用administrator
2、確定“服務”有兩個服務保證都啟動了:
Remote Procedure Call (RPC)
Task Scheduler
3、net use \172.16.6.218\g\MSSQL11.MSSQLSERVER\MSSQL\Backup Holley2016 /user:administrator
這個需要放在你需要訪問共享伺服器的共享資料夾這條命令前面。