windows - شرح - اوامر ملفات bat




ملف دفعي لتشغيل الأمر بينغ والإخراج إلى نص أسويل (2)

لدي ملفين دفعة إلى بينغ كافة عناوين إب في ملف نصي servers.txt . واحدة من الملفات دفعة بينغ الملقمات ويظهر النتيجة على نافذة سمد. ملف دفعة أخرى بينغ الملقمات ويظهر شيئا على ويندوز سمد وبعد الانتهاء من جميع بينغ إلى ملقمات، فإنه سيتم وضعها في الملف OnlineServers.txt .

أريد أن مزج هذا الشيء.

أريد ملف دفعي لتشغيل بينغس وتظهر لهم على الشاشة ووضع كافة الملقمات على الانترنت في OnlineServers.txt .

هنا هو ملف الدفعة الأولى الذي يظهر بينغس على نوافذ سمد دون أي إخراج إلى ملف نصي:

  @echo off
  for /f "delims=" %%a in (servers.txt) do ping -n 1 %%a >nul && (echo %%a      Online) || (echo %%a        Offline)

 echo.
 pause

وهنا هو ملف الدفعة الثانية الذي لا يظهر شيئا على نافذة سمد وإخراج الملف فقط بعد أن بينغ جميع الملقمات:

 @echo off
 setlocal EnableDelayedExpansion
 (for /F "delims=" %%a in (servers.txt) do (
 ping -n 1 "%%a" > NUL
 if !errorlevel! equ 0 (
  echo %%a      Online
 )
 )) > OnlineServers.txt

هذه هي أكثر من 150 ملقمات للتحقق وأضيف ملقمات إلى هذه القائمة كل يوم حتى في قائمة طويلة للتحقق.


إذا كنت ترغب في إضافة بعض الألوان لملف دفعتك من هذا القبيل:

@echo off
Title Multi-Ping hosts Tester with colors by Hackoo 2016
call :init
set "Servers_List=servers.txt"
If Not exist %Servers_List% goto error
mode con cols=70 lines=35
set "LogFile=OnlineServers.txt"
If exist %LogFile% Del %LogFile%
echo(
call :color 0E "      ------- Ping status of targets hosts -------" 1
echo(
(
    echo ******************************************************
    echo   PingTest executed on %Date% @ Time %Time%
    echo ******************************************************
    echo(
) > %LogFile%
Setlocal EnableDelayedExpansion
for /f "usebackq delims=" %%a in ("%Servers_List%") do (
    ping -n 1 %%a | find "TTL=" >nul
    if errorlevel 1 (
        call :color 0C " Host %%a is not reachable KO" 1
    ) else (
        call :color 0A " Host %%a is reachable OK" 1 & echo Host %%a is reachable OK >>%LogFile%
    )
)
EndLocal
Start "" %LogFile%
pause>nul & exit
::************************************************************************************* 
:init
prompt $g
for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a"
exit /b
::*************************************************************************************
:color
set nL=%3
if not defined nL echo requires third argument & pause > nul & goto :eof
if %3 == 0 (
    <nul set /p ".=%bs%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
) else if %3 == 1 (
    echo %bs%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
)
exit /b
::*************************************************************************************
:error
mode con cols=70 lines=3
color 0C
cls
echo(
 echo       ATTENTION ! ! !  Check if the file "%Servers_List%" exists !
pause>nul & exit
::*************************************************************************************

حتى تتمكن من الحصول على الانتاج مثل هذا واحد:


يجب أن يكون الكتابة دفعة إلى الملف لكسر الأقواس المرفقة مع إعادة توجيه وإعادة تعيين الملف في البداية.

@echo off
setlocal EnableDelayedExpansion

:: Reset file
Type Nul >OnlineServers.txt

for /F "delims=" %%a in (servers.txt) do (
    ping -n 1 "%%a" >NUL 2>&1
    If !errorlevel! equ 0 (
       echo %%a      Online
       echo %%a      Online>>OnlineServers.txt
    ) Else (
       echo %%a      Offline
    )
)




cmd