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

2024/10/21

本次外稽又提到要注意server的HD狀況
如果低於某個臨界值要有告警

寫個批次檔來做 並把資料丟到 log server 
要注意的是批次檔的計算有32位元的問題
所以先把後6位砍掉再計算

@echo off

del %tmp%\disk_usage.txt

setlocal enabledelayedexpansion

for /f "tokens=1,2,3" %%A in ('wmic logicaldisk get caption^, size^, freespace ^| findstr /R "^[A-Z]"') do (
    set "drive=%%A"
    set "totalSize_ori=%%C"
    set "freeSpace_ori=%%B"

    if defined drive (
        rem Remove trailing spaces and convert to numbers
        set /a totalSize=!totalSize_ori:~0,-6!
        set /a freeSpace=!freeSpace_ori:~0,-6!

        rem Check if totalSize is not zero to avoid division by zero
        if !totalSize! gtr 0 (
            set /a freePercent=freeSpace*100/totalSize

            rem echo %COMPUTERNAME% >> %tmp%\disk_usage.txt
echo disk: !drive! >> %tmp%\disk_usage.txt
            echo size: !totalSize! MB >> %tmp%\disk_usage.txt
            echo %COMPUTERNAME% free_space: !freeSpace! MB >> %tmp%\disk_usage.txt
            echo remaining_capacity: !freePercent!%% >> %tmp%\disk_usage.txt
            echo -------------------------------- >> %tmp%\disk_usage.txt
        ) 
    )

endlocal

type %tmp%\disk_usage.txt | nc -w 2 -u 10.0.0.1 514

2024/02/22

在windows 排程中執行bat檔會出現dos視窗
如果要隱藏要使用 vbs
如以下範例 假設要執行的是run.bat

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c run.bat",vbhide

存成 run.vbs
再執行run.vbs 即可

2023/12/22

linux shell 中如果要判斷前一個指令是否執行成功
可以使用 $? 來判斷

在m$ windows中 也有一個變數名稱
%ERRORLEVEL%

但是
千萬不要使用在 bat
因為在dos 命令提示字元中都沒問題
但放在bat中就會有不同的結果

2023/06/12

最近在幫人家改bat檔
碰到二個問題
記一下解法

wmic qfe list >> a.txt
執行以上指令時 會同時產生 ascii 和 unicode
完全無法理解為什麼會有這個問題
為了解決 可以使用以下二個語法

wmic qfe list | findstr "^" >> a.txt
wmic qfe list | find /v "" >> a.txt


再來是如果
echo <abc> >> a.txt
會出現錯誤
必須使用跳脫字元
echo ^<abc^> >> a.txt

再來是換行的問題
要換行可以使用
echo. >> a.txt

如果不想換行 可以使用
echo|set /p="abc" >> a.txt




2022/12/27

今天有人問個問題
需要創建大量目錄
但目錄名稱有簡体字
本來想說應該沒什麼
結果一跑才知道在dos模式utf-8顯示會有問題
而無法建立
所以批次檔要加上

chcp 65001

才行

範例如下

%echo off

chcp 65001

for /f %%a in (data) do (
    echo %%a
    md %%a
)


2021/03/19

以往如果需要解壓後執行批次檔時

都是先壓成7z再利用7zsfx二次處理

今天發現 bandizip 可以直接壓成自解解檔達成以上的需求

但有個問題就是自解檔執行後會跳出詢問視窗 而且預設無法關掉 

找了一下forum

在執行時加上 /auto就可以解決這個問題

例如

abc.exe /auto


2024/3/3 後記

可以用批次檔處理這個問題

run.bat 內容如下

curl -o %tmp%\abc.exe http://10.0.0.1/abc.exe

start %tmp%\abc.exe /auto



https://www.azofreeware.com/2012/07/7-zip-sfx-maker-32-7z.html

Bandizip

https://groups.google.com/g/bandizip-win/c/tS9KLKh45O8/m/spdej7MYAwAJ

2015/10/14

為了上win10的kms
今天把kms從win7移到win server 2012 r2
測試了原來在win7 win8上使用的bat檔可以直接用沒問題
再來就是office 2016
不管怎麼寫就是會有問題
上網找了一下
有些人說是編碼的問題
有些人說是編輯器的問題
最後試的結果是
word notepad都不行 不管用什麼編碼
notepad++不管用什麼編碼都沒問題
XD

office 2016 kms認証bat檔內容如下
需要的自行取用
記得要改kms server的ip

@echo off
set OfficePath="C:\Program Files\Microsoft Office\Office16\"
if exist "C:\Program Files (x86)\Microsoft Office\Office16\ospp.vbs" set OfficePath="C:\Program Files (x86)\Microsoft Office\Office16\"
cscript %OfficePath%ospp.vbs /sethst:1.2.3.4
cscript %OfficePath%ospp.vbs /setprt:1688
cscript %OfficePath%ospp.vbs /act
echo active is success when you see "<Product activation successful>"
pause



2014/03/20

一直使用vnc的反向連線來作為電腦支援之用
但原來使用的viewer版本太舊
以致於在win8連線時會出現一些很奇怪的狀況
所以想使用bat去call最近版本的viewer
但又碰到一個問題就是bat的dos視窗還要手動去關
很麻煩
google了一下資料
只要在bat使用start就可以了
方便
之後有新版ultravnc時只要把這個批次檔copy到同一個資料夾就好了

檔案內容如下

start vncviewer.exe -listen 81
exit

http://www.weithenn.org/2014/01/cmd-exit-after-exec-batch-file.html

2013/07/02

DOS模式下測i/o批次檔

DOS模式下測io批次檔

:cp
echo %TIME% >> k:\time.txt
copy c:\abc.txt k:\abc.txt
echo %TIME% >> k:\time.txt
echo ========== >> k:\time.txt
goto cp