2012年12月22日

windows batch note

  • 利用 for 來解析變數或指令的輸出

    範例:輸出日期格式為 20121222
    for /F "tokens=1-3 delims=/ " %a IN ("%date%") DO (set _mydate=%a%b%c)

    若要寫在批次檔裡,變數要多一個%,例如 %%a
    ※delims=/ 表示以/符號當區隔符號,特別注意可以用多個符號做分隔,例如delims=/+
    ※若要做檔案分析可用("filenameset")
    ※若要做指令輸分析可用(`command`)
    ※若要分析字串可用("String")
    ※tokens=1-3表示用delims分隔後,取第1到3的值並設定為變數,也可以用1,3表示要抓第1和3的值
  • echo

    換行
    @echo:

  • forfiles
    這個指令可針對條件搜尋檔案並對這些檔案執行指令
    語法: forfiles [/p Path] [/m Mask] [/c Command] [/d [ + | - ] {dd/MM/yyyy | dd } ]

    /p 要搜尋的路徑,預設為當前目錄

    /s 搜尋子目錄

    /c 對找到的檔案執行的指令,預設為 "cmd /c echo @file"
    常用的變數
    @file 檔案名稱
    @fname 檔案名稱,但沒有副檔名
    @path 檔案的絕對路徑
    @isdir  假如是目錄回應"TRUE",若為檔案回應"FALSE"
    @fsize 檔案大小,單位bytes
    @fdate 檔案最後修改的日期
    @ftime 檔案最後修改的時間

    /D date 最後修改的日期大於或等於給定的日期(+),或少於(-)

    /D + dd 大於或等於今天的日期加上 "dd" (未來日期)

    /D - dd 小於或等於今天的日期減去 "dd" (過去日期)

    "dd" 的區間為0 ~ 32768,預設採用 +

    範例: 刪除七天前的備份檔(刪除檔案最好加上/m避免誤砍)
    forfiles /p D:\backup /m *.bak /d -7 /c "cmd del @path"

沒有留言:

張貼留言