各位前輩好,
我目前要用cmd做出可以增加排成功能,但是某些特定電腦不加排成,我就想說用IP來判斷
set _create_schtasks=0
FOR /F "delims=: tokens=2" %%a in ('ipconfig ^| find "IP"') do if /i "%%a" == " 192.168.10.8" set _create_schtasks=1
......
if %_create_schtasks% == 0 (echo →→→→→→→增加) else (echo →→→→→→→不增加)
目前發現這種狀況... 請問有人知道是哪邊錯嗎?
此台電腦是WINDOWS SERVER 2003 sp2
還是說CMD有哪個指令可以判斷這串STRING是否包含另一串STRING?
PS:我發現windows server 2003 的都判斷不到...是指令不一樣嗎? 還是?
感謝 slime 大大!!!!
@echo off
set _create_schtasks=0
set _notip=0
(ipconfig | find "IP" | find "192.168.10.8" ) || (set _notip=1) > nul
if %_notip% equ 1 (set _notip=0) else (set _create_schtasks=1) > nul
if %_create_schtasks% == 0 (echo →→→→→→→增加排成) else (echo →→→→→→→不關機電腦)
然後有幾台中間就加幾行...orz
可以試試: 用 find 判斷, 如果判斷結果為 false , 用兩個 || 執行下一個動作, 如果條件成立, 可以用兩個 && 來執行. 例如:
(ipconfig | find "IP Address" | find "192.168.10.8") || (想作的事)
(ipconfig | find "169.254.") && (echo 沒抓到DHCP IP)
有幾台的話是可以用迴圈或 %1~%9 呼叫, 例如:
迴圈法:
for %%ip in (8.8.8.8 101.101.101.101) do ((檢測) || (動作))
%1~%9 法:
這個檔案命名為 1.bat
第二的檔案取名 2.bat , 2.bat 的內容為:
call 1.bat 8.8.8.8
call 1.bat 101.101.101.101
而 1.bat 的內容, 把 192.168.x.x 改成 %1 , 就會帶入第一個參數.
而 %2~%9 並不是同時帶入九個, 而是如果有不同功能, 例如:
1.batecho %2 公司的 DNS 為 %1
2.bat
call 1.bat 8.8.8.8 Google
call 1.bat 101.101.101.101 TWNIC
顯示結果:
Google 公司的 DNS 為 8.8.8.8
TWNIC 公司的 DNS 為 101.101.101.101
如果應用在備份排程規劃, 可以像這樣:
for %%f in (企劃1的IP 企劃2的IP ....) do call sch_back_add %%f add sch_for_dg.xml
for %%f in (財務1的IP 財務2的IP ....) do call sch_back_add %%f add sch_for_fin.xml
for %%f in (測試的IP ....) do call sch_back_add %%f remove sch_for_test
rem for %%f in (主管1的IP 主管2的IP ....) do format /q /s (網路上的程式 copy 前要先檢查用途)