ping -t 192.168.1.1|cmd /q /v /c "(pause&pause)>nul & for /l %a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 192.168.1.1>nul" >C:\1.txt
執行之後會存在C碟 這是一段可以紀錄ping的時間 檔名為1.txt 會顯示這樣
但是如果存檔成.cmd檔案還是.bat檔案,然後再執行就會出現。
不知道這個要怎麼改,才可以存檔成.cmd還是.bat,方便可以直接執行就好。
改成這樣
ping -t 192.168.1.1 | cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 192.168.1.1 >nul)" >C:\1.txt
變數要用 %%a
另外開啟時要注意有沒有權限可以寫入
可能要看一下 是不是有其他程式在使用你寫入的那隻文字檔
你是有其他程式在同時抓取該檔案嗎
沒有耶 如果照我原本的那個指令,我cmd多開 一個一個貼上去
好像無解QQ 我是想要ping很多台 然後有一個紀錄
剛剛測試 多增加一個檔案
t.cmd => 192.168.1.1
t2.cmd => 192.168.1.2
All.cmd
start cmd /k C:/t.cmd &
start cmd /k C:/t2.cmd
這樣會跟你一樣出現 檔案正在使用 但 txt 輸出是正常的 這個 我就不太知道是甚麼關係了 不過這樣應該可以一次ping 多個
只是cmd檔要個別創立 可能看有沒有其他大神有更好的方法
我是不太喜歡用 Batch-script 搞密集的查詢行為啦……
(雖說我很久沒碰了~ 但這種事務不是一堆效率不錯的小程式可用?)
以下隨便寫的 .bat
檔案內容:
(主要參考這裡)
@echo off
rem ## This is [aDemo.cmd];
setlocal EnableDelayedExpansion
rem ##
set "myDestIP=%~1"
set "myLog01Path=%~2"
if not defined myDestIP @(
echo IP? File-Path?
goto :EOF
)
if not defined myLog01Path @(
echo File-Path?
goto :EOF
)
set "myFindStr=TTL="
set "myDelay=2"
rem ##
set "myTitle=ping [%myDestIP%] and save as [%myLog01Path%];"
title %myTitle%
echo %myTitle%
type nul >"%myLog01Path%"
for /l %%i in (1,0,2) do @echo. | cmd /v:on /c (>>"%myLog01Path%" set /p"z=!date! !time! : ")&(ping -n 1 "%myDestIP%" | find "%myFindStr%" >>"%myLog01Path%")&&(timeout /t %myDelay% > nul)
rem ##
.bat
檔案內需自訂的變數說明:
(若想從 script 呼叫參數 (例如%1
之類) 上使用請自改。)
myFindStr
: 想丟入記錄檔內的單行字串之尋找用關鍵字。Reply from
或者 回覆自
)
myDelay
: 每個 ping
之間的間隔時間。我的使用方式: 開啟 4 個 cmd.exe
呼叫 aDemo.cmd
:
start cmd /k (".\aDemo.cmd" "127.0.0.1" ".\myLog01.txt")
start cmd /k (".\aDemo.cmd" "127.0.0.1" ".\myLog02.txt")
start cmd /k (".\aDemo.cmd" "127.0.0.1" ".\myLog03.txt")
start cmd /k (".\aDemo.cmd" "127.0.0.1" ".\myLog04.txt")
班門弄斧~~之前幫我們家小朋友要長期監控某台主機網路狀況時寫的
@Echo off
if "%1" == "" goto :Exit
:Loop
date /T >> .\Ping_%1.log
time /T >> .\Ping_%1.log
ping %1 -n 100 >> .\Ping_%1.log
goto :Loop
:Exit
echo Usage:PingServer [ServerIP]
後來小朋友反映,螢幕上沒顯示,要去看Log檔太麻煩,就改了第二版
@Echo off
if "%1" == "" goto :Exit
:Loop
date /T |tee -a .\Ping_%1.log
time /T |tee -a .\Ping_%1.log
ping %1 -n 100 |tee -a .\Ping_%1.log
goto :Loop
:Exit
echo Usage:PingServer [ServerIP]
tee這支程式您可以搜尋tee for windows來取得
看到你的分享, 我忽然發現, 我幹嘛順著發問者的寫法下去寫另一種令後來的我傻眼的腳本…… 看到我呼叫一堆 cmd.exe 就讓我感嘆當時的我是發神經喔…… Orz
re.Zero
您只是熱心的想解決邦友問題而已,很正常啦~~
而我是看到原PO現有的那段指令就頭痛,剛好先前有寫過現成的類似的功能,拿出來野人獻曝一下,您寫的Script很讚,比我強太多了!