顯示具有 cmd 標籤的文章。 顯示所有文章
顯示具有 cmd 標籤的文章。 顯示所有文章

Eventquery.vbs (指令查詢Event Log)

查詢MSSQLSERVER最新一筆錯誤記錄 C:\WINDOWS\system32>cscript eventquery.vbs /L Application /FO table /FI "Type eq Error" /FI "Source eq MSSQLSERVER" /r 1

Eventquery.vbs Yay! A fix for EventQuery - Windows Security Logging and Other Esoterica - Site Home - MSDN Blogs

WHERE

where /R F: "*我不很*.mp3" 也可以用dir達成一樣效果 dir 我不很*.mp3 /S
Where
The Will Will Web | Windows 要如何快速找到特定執行檔的所在目錄 ( which )

FOR 輸出時被空白截斷

因為FOR指令預設分隔符號是空白和Tab,故需複寫。
@ECHO OFF
FOR /f "delims=" %%a in ('DIR *.txt /b') DO ECHO %%a
PAUSE

dos - batch file for loop with spaces in dir name - Stack Overflow

pass parameters include and-sign in batch

參數、變數包含『&』符號,記得使用雙引用包起來
ECHO時,請取代成^& SET "a=abc&123&def"
ECHO %a:&=^&%
PAUSE

Quotes, Escape Chars, Delimiters

Read password from txt file and auto extract RAR file

  1. 取得Part1 RAR檔名
  2. 取得解壓密碼檔名
  3. 讀取解壓密碼 (txt編碼為ANSI)
  4. 執行解壓縮

@ECHO OFF
REM 取得Part1 RAR檔名
FOR /f "delims=" %%a in ('DIR *.rar /oe /b') DO (
SET fisrtFileName=%%a
GOTO getPasswordFileName
)
:getPasswordFileName
REM 取得解壓密碼檔名
FOR /f "delims=" %%a in ('DIR *.txt /oe /b') DO (
SET passwordFileName=%%a
GOTO getPassword
)
:getPassword
REM 讀取解壓縮密碼
REM pw.txt編碼為ANSI
FOR /f "usebackq tokens=1" %%i in ("%passwordFileName%") DO (
SET rarPassword=%%i
GOTO extractFile
)
:extractFile
ECHO RarFileName:%fisrtFileName%
ECHO PwFileName:%passwordFileName%
ECHO Pw:%rarPassword:&=^&%
REM 執行解壓縮
"C:\Program Files\WinRAR\Rar.exe" -p"%rarPassword%" x %fisrtFileName%
FOR /f "delims=" %%a in ('DIR *.url /oe /b') DO (
SET urlFileName=%%a
GOTO renameJPG
)
:renameJPG
REM 重新命名封面
REN *.jpg %urlFileName:.url=%.jpg
PAUSE

隱藏資料夾

拖曳資料夾至本批次檔,即可隱藏資料夾
@ECHO OFF
ATTRIB +S +H %1

自動變更IP

判斷目前IP,且自動變更IP
@ECHO OFF
for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4"') do set ip=%%b
SET IP=%IP:~1%
IF %IP% == 140.127.22.228 (
    Set ip=140.127.22.219
) ELSE (
    SET ip=140.127.22.228
)
netsh interface ip set address "區域連線" static %IP% 255.255.255.128 140.127.22.253
REM netsh interface ip set dns "區域連線" static 140.127.1.2
REM netsh interface ip add dns "區域連線" static 8.8.8.8
ECHO "Change IP => %IP%"
PAUSE

取得年、月、日、時間

@echo off
echo %%date%%=%date%
echo 年 = %%date:~0,4%% = %date:~0,4%
echo 月 = %%date:~5,2%% = %date:~5,2%
echo 日 = %%date:~8,2%% = %date:~8,2%
echo:
echo %%time%%=%time%
set NowTime=%time: =0%
set hh=%NowTime:~0,2%
set mm=%NowTime:~3,2%
set ss=%NowTime:~6,2%
echo hh=%hh%
echo mm=%mm%
echo ss=%ss%
pause


@ECHO OFF
For /F "tokens=1-3 delims=/ " %%a IN ('DATE /t') DO (SET DATE=%%a-%%b-%%c)
SET NowTime=%time: =0%
ECHO %DATE%-%NowTime:~0,2%-%NowTime:~3,2%-%NowTime:~6,2%
PAUSE


Batch Get Date Time

移動.jpg至上一層目錄

移動.jpg至上一層目錄
FORFILES /S /M *.jpg /C "cmd /c move @file .."

整理索引、回收已刪除空間

When a large amount of data is deleted from the database file it leaves behind empty space, or "free" database pages. This means the database file might be larger than strictly necessary. Running VACUUM to rebuild the database reclaims this space and reduces the size of the database file.
for %%i in (*.sqlite) do sqlite3 %%i VACUUM | echo %%i
FORFILES /M *.sqlite /S /C "cmd /c sqlite3.exe @file VACUUM | ECHO @file"
SQLite Query Language: VACUUM
Mozilla Links 正體中文版: Firefox 3 日漸肥大的收藏庫:減肥法
Vacuum the Stylish SQLite DB - forum.userstyles.org

取得IP

Note:不同的OS,需更改IPv4此字串

@ECHO OFF
for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4"') do set ip=%%b
SET IP=%IP:~1%
ECHO %IP%
TIMEOUT 5


command - Batch: get IP address - Stack Overflow

FORFILES

FORFILES [/P pathname] [/M searchmask] [/S]
         [/C command] [/D [+ | -] {yyyy/MM/dd | dd}]

描述:
    選取一個檔案 (或一組檔案),並在檔案上
    執行命令。這對批次工作很有幫助。

參數清單:
    /P    pathname      表示要開始搜尋的路徑。
                        預設資料夾是目前的
                        目錄 (.)。

    /M    searchmask    根據 searchmask 搜尋檔案。
                        預設的 searchmask 是 '*'。

    /S                  指示 forfiles 遞迴搜尋
                        子目錄。例如 "DIR /S"。

    /C    command       表示每個檔案要執行的命令。
                        命令字串應該包含在雙括號
                        之間。

                        預設的命令是 "cmd /c echo @file"。

                        下列變數可以使用於命令字串:

                        @file    - 傳回檔案的名稱。
                        @fname   - 只傳回檔案的名稱,
                                   不傳回副檔名。
                        @ext     - 只傳回檔案的
                                   副檔名。
                        @path    - 傳回檔案的完整路徑。
                        @relpath - 傳回檔案的相對
                                   路徑。
                        @isdir   - 如果檔案類型是目錄的話,
                                   傳回 "TRUE",如果是檔案
                                   的話,傳回 "FALSE"。
                        @fsize   - 傳回檔案的大小,
                                   單位是位元組。
                        @fdate   - 傳回檔案上次修改的
                                   日期。
                        @ftime   - 傳回檔案上次修改
                                   的時間。

                        要在命令列中包含特殊字元的話,
                        請使用 0xHH 格式的十六
                        進位字元碼 (例如 0x09 代表 tab)。
                        內部的 CMD.exe 命令應該
                        以 "cmd /c" 執行。

    /D    date          選取檔案上次修改的時間大於或
                        等於 (+) 、小於或等於 (-),
                        使用 "yyyy/MM/dd" 格式指定的日期;
                        或選取檔案上次修改
                        的時間大於或等於 (+)
                        目前的日期再加上 "dd" 天、
                        小於或等於 (-) 目前的日期減去 "dd" 天。
                        有效的 "dd" 可以是介於
                        0 - 32768 之間的數字。
                        如果未指定,"+" 將被視為預設符號。

    /?                  顯示這個說明訊息。

範例:
    FORFILES /?
    FORFILES 
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 was changed 30 days ago"
    FORFILES /D 2001/01/01
             /C "cmd /c echo @fname is new since Jan 1st 2001"
    FORFILES /D +2011/3/10 /C "cmd /c echo @fname is new today"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

Multiple commands in cmd

字元語法定義
& [...]Command1 &Command2在一個命令列上,用來分割多個命令。Cmd.exe 會執行第一個命令,然後,再執行第二個命令。
&& [...]Command1 &&Command2唯有 && 符號前面的命令成功時,才執行該符號之後的命令。Cmd.exe 會執行第一個命令,並且只有當第一個命令完全成功時,才會執行第二個命令。
|| [...]Command1 || Command2唯有 || 前的命令失敗時,才執行 || 之後的命令。Cmd.exe 會執行第一個命令,並且只有當第一個命令未成功完成 (接收到大於 0 的錯誤字碼) 時,才執行第二個命令。
( ) [...](Command1 & Command2)用於組合或巢狀處理多個命令。
; 或 ,Command1 Parameter1;Parameter2用於分割命令參數。

命令殼層概觀
Solved: multiple commands in CMD?
How to Group Multiple Commands in cmd.exe

Windows cmd Consolas 字型

  1. 先 chcp 65001 切到 UTF-8
  2. 在 cmd.exe 的內容裡,利用「字型」頁籤,選擇 Consolas 字型
  3. 按「確定」關閉「內容」視窗,儲存成為適用於全部
  4. 重新開啟 cmd.exe,切到「內容」的「版面設定」頁籤,隨便修改一個值
  5. 按「確定」關閉「內容」視窗,儲存成為適用於全部
  6. 重新開啟 cmd.exe,下 chcp 950 指令
  7. 開啟「內容」,此時會位於「版面設定」頁籤,修改成原來的值,但不要切到任何別的頁籤
  8. 按「確定」關閉「內容」視窗,儲存成為適用於全部
  9. 重新啟動 cmd.exe,完成。
這應該是利用到了 cmd.exe 的漏洞:若是「字型」這一個頁籤,沒有被開啟,則不會修正字型的設定。

因此,我們先利用第 4 步,讓「內容」的頁籤「定位」在「版面設定」裡,切回 codepage 950 之後,重新啟動「內容」,此時頁籤是在「版面設定」,而不是「字型」,修改設定值後存檔,再關閉 cmd.exe,就可以把 codepage 的設定,連同版面設定,但不含字型設定,給儲存起來。

Consolas in Windows Console

DIR

顯示檔案清單以列出目錄中的檔案及子目錄。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]]  [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              指定要顯示的磁碟機、目錄或檔案。

  /A          依照指定的檔案屬性來顯示檔案。
  attributes   D  目錄                R  唯讀檔
               H  隱藏檔              A  保存檔
               S  系統檔案            -  無意義
               L  重新分析點          -  首碼表示否定
  /B          使用單純格式 (沒有標頭資訊或摘要)。
  /C          顯示檔案大小千位數分隔符號。這是預設值。使用 /-C 來停用
              分隔符號的顯示。
  /D          與寬的列表格式相同,但是依照欄來排序。
  /L          使用小寫顯示。
  /N          使用新的長列表格式,檔名會顯示在最右方。
  /O          依照指定的排序順序來列出檔案。
  sortorder    N  依名稱 (英文字母)   S  依大小 (最小的在前)
               E  依副檔名 (英文字母) D  依照日期與時間 (日期較早的在前)
               G  先列出子目錄        -  表示相反的順序
  /P          當資料填滿整個螢幕時暫停顯示。
  /Q          顯示檔案擁有者。
  /R          顯示檔案的替代資料流。
  /S          顯示指定目錄及所有子目錄中的檔案。
  /T          指定用來顯示或排序的時間欄位
  timefield   C  建立
              A  上次檔案存取時間
              W  上次寫入檔案時間
  /W          使用寬的列表格式。
  /X          顯示對非 8.3 格式的檔案產生的短檔名。這個格式和 /N 相同,
              但是短檔名會插入在長檔名之前。如果沒有長檔名存在,該處會
              顯示空白。
  /4          顯示四位數的年份

參數可能會在 DIRCMD 環境變數預先設定。您可以在任何參數使用連字號字首(-)
來覆蓋預先的設定--例如: /-W。

輸出資料夾檔案及目錄名稱至List.txt
DIR /B /OG > List.txt

ROBOCOPY


-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                             
-------------------------------------------------------------------------------
              使用方式 :: ROBOCOPY source destination [file [file]...] [options]

             source :: 來源目錄 (drive:\path 或 \\server\share\path)。
        destination :: 目的地目錄  (drive:\path 或 \\server\share\path)。
               file :: 要複製的檔案  (名稱/萬用字元: 預設值是 "*.*")。

::
:: 複製選項 :
::
                 /S :: 複製子目錄,但是空的子目錄例外。
                 /E :: 複製子目錄,包括空的子目錄。
             /LEV:n :: 只複製來源目錄的前 n 層。

                 /Z :: 在可重新啟動模式複製檔案。
                 /B :: 在備份模式複製檔案。
                /ZB :: 使用可重新啟動模式; 如果拒絕存取,則使用備份模式。
            /EFSRAW :: 在 EFS RAW 模式複製所有加密檔案。

  /COPY:copyflag[s] :: 要為檔案複製什麼內容 (預設值是 /COPY:DAT)。
                       (複製旗標: D=資料、A=屬性、T=時間戳記)。
                       (S=安全性=NTFS ACL、O=擁有者資訊、U=稽核資訊)。

           /DCOPY:T :: 複製目錄時間戳記。

               /SEC :: 複製包含安全性的檔案 (相當於 /COPY:DATS)。
           /COPYALL :: 複製所有檔案資訊 (相當於 /COPY:DATSOU)。
            /NOCOPY :: 不複製檔案資訊 (可用於 /PURGE)。

            /SECFIX :: 修正所有檔案的安全性,即使略過的檔案也包含在內。
            /TIMFIX :: 修正所有檔案的檔案時間,即使略過的檔案也包含在內。

             /PURGE :: 刪除來源已經不存在的目的地檔案/目錄。
               /MIR :: 鏡像樹狀目錄 (相當於 /E 加 /PURGE)。

               /MOV :: 移動檔案 (複製後從來源刪除)。
              /MOVE :: 移動檔案和目錄 (複製後從來源刪除)。

     /A+:[RASHCNET] :: 將指定的屬性新增至複製的檔案。
     /A-:[RASHCNET] :: 從複製的檔案移除指定的屬性。

            /CREATE :: 只建立樹狀目錄和長度為零的檔案。
               /FAT :: 只使用 8.3 FAT 檔案名稱,建立目的地檔案。
               /256 :: 關閉特長路徑 (> 256 個字元) 支援。

             /MON:n :: 監視來源; 看到 n 個字元以上時再次執行。
             /MOT:m :: 監視來源; m 分鐘後如果變更,則再次執行。

      /RH:hhmm-hhmm :: 執行時數 - 新複本可以開始的時間。
                /PF :: 根據每一個檔案為基礎,檢查執行時數 (不是根據每一次通過)。

             /IPG:n :: 慢速線路可用頻寬,封包之間的差距 (毫秒)。

                /SL :: 複製符號連結與目標。

            /MT[:n] :: 以 n 個執行緒執行多執行緒複製 (預設值為 8)。
                       n 必須至少為 1,但不可以大於 128。
                       此選項與 /IPG 和 /EFSRAW 選項不相容。
                       使用 /LOG 選項重新導向輸出,以獲得更好的效能。

::
:: 檔案選取選項 :
::
                 /A :: 只複製已設定保存屬性的檔案。
                 /M :: 只複製包含保存屬性的檔案並重設。
    /IA:[RASHCNETO] :: 只包含附帶任何指定屬性的檔案。
    /XA:[RASHCNETO] :: 排除附帶任何指定屬性的檔案。

 /XF file [file]... :: 排除符合指定名稱/路徑/萬用字元的檔案。
 /XD dirs [dirs]... :: 排除符合指定名稱/路徑的目錄。

                /XC :: 排除變更的檔案。
                /XN :: 排除較新的檔案。
                /XO :: 排除較舊的檔案。
                /XX :: 排除其他檔案和目錄。
                /XL :: 排除孤立的檔案和目錄。
                /IS :: 包含相同的檔案。
                /IT :: 包含調整的檔案。

             /MAX:n ::檔案大小上限 - 排除大於 n 個位元組的檔案。
             /MIN:n :: 檔案大小下限 - 排除小於 n 個位元組的檔案。

          /MAXAGE:n :: 檔案期限上限 - 排除 n 日/日期之前的檔案。
          /MINAGE:n :: 檔案期限下限 - 排除 n 日/日期之後的檔案。
          /MAXLAD:n :: 上次存取日期上限 -排除自 n 日後未使用的檔案。
          /MINLAD:n :: 上次存取日期下限 - 排除自 n 日後使用的檔案。
                       (如果 n < 1900 則 n = n 日,否則 n = YYYYMMDD 日期)。

                /XJ :: 排除交叉點。(一般會預設包含)。

               /FFT :: 使用 FAT 檔案時間 (2 秒精細度)。
               /DST :: 補償 1 小時 DST 時差。

               /XJD :: 排除目錄的交叉點。
               /XJF :: 排除檔案的交叉點。

::
:: 重試選項:
::
               /R:n :: 失敗複本的重試次數: 預設值是 1 百萬次。
               /W:n :: 重試之間等候時間: 預設值是 30 秒。

               /REG :: 將 /R:n 和 /W:n 儲存至登錄中,變成預設值。

               /TBD :: 等候共用名稱。即將定義 (重試錯誤 67)。

::
:: 記錄選項:
::
                 /L :: 限清單 - 不複製、刪除任何檔案或加上戳記。
                 /X :: 報告所有其他檔案,不僅是這些選取的檔案而已。
                 /V :: 產生詳細資訊輸出,顯示略過的檔案。
                /TS :: 在輸出中包含來源檔案時間戳記。
                /FP :: 在輸出中包含檔案的完整路徑名稱。
             /BYTES :: 將大小列印成位元組。

                /NS :: 沒有大小 - 不記錄檔案大小。
                /NC :: 沒有類別 - 不記錄檔案類型。
               /NFL :: 沒有檔案清單 - 不記錄檔案名稱。
               /NDL :: 沒有目錄清單 - 不記錄目錄名稱。

                /NP :: 無進度 - 不顯示複製百分比。
               /ETA :: 顯示複製的檔案預估到達時間。

          /LOG:file :: 輸出狀態至記錄檔 (覆寫現有的記錄檔)。
         /LOG+:file :: 輸出狀態至記錄檔 (附加至現有的記錄檔)。

       /UNILOG:file :: 輸出狀態至記錄檔,變成 UNICODE (覆寫現有的記錄檔)。
      /UNILOG+:file :: 輸出狀態至記錄檔,變成 UNICODE (附加至現有的記錄檔)。

               /TEE :: 輸出至主控台視窗,以及記錄檔。

               /NJH :: 沒有工作標頭。
               /NJS :: 沒有工作摘要。

           /UNICODE :: 輸出狀態為 UNICODE。

::
:: 工作選項:
::
       /JOB:jobname :: 從命名的工作檔案取得參數。
      /SAVE:jobname :: 將參數儲存至命名的工作檔案
              /QUIT :: 處理命令列後結束 (檢視參數)。
              /NOSD :: 未指定來源目錄。
              /NODD :: 未指定目的地目錄。
                /IF :: 包含以下檔案。