2013-10-04 62 views
0

我需要創建一個批處理腳本。如果有命令的結果,那麼IF沒有結果,然後批處理腳本

該腳本應該能夠檢測是否有結果。

我使用的命令

dsquery domainroot -inactive 60 

它告訴我的一切,都處於非活動狀態60天的賬戶。

我運行相同的命令180天,我沒有得到任何結果。

我運行命令60天,我得到的結果。

我需要創建退出代碼來確定是否存在任何結果。

每個錯誤級別都是0(有和沒有結果)。

有沒有其他的方法來檢測是否有結果。所以我可以把它變成一個IF語句。

+0

您可以解析命令輸出以獲得結果。發表它!關於'IF':有多種形式,其中一種使用'ERRORLEVEL' ... –

回答

0

我需要解決這個問題的腳本後添加此腳本GFI。 下面的腳本允許您檢測60天內未激活的用戶並將結果報告出來。

如果您將此腳本上載到GFI MAX RMM,則腳本檢查將失敗並向您報告結果並將它們轉發到您的PSA系統(如果您配置了一個腳本)。

自動生成的門票讓你知道客戶沒有讓你知道有人可能離開了公司,什麼不是愛。

@echo off 
REM This batch script was created by som3guy. 
REM Cleans up any previous runs of this batch command. 
cd %temp% 
Del Inactiveusers.txt 
echo "The following user(s) have been inactive for 60 days or more:" > Inactiveusers.txt 
REM Saves a file called Inactiveusers.txt to the %temp% dir for analysis. 
dsquery user domainroot -inactive 60 >> Inactiveusers.txt 
GOTO Check 

REM Check the filesize and sets as a variable. 
:CHECK 
for %%A in (%temp%/Inactiveusers.txt) do set fileSize=%%~zA 
REM Determines if there is data in the file or not. And sends to appropriate Function. 
IF %filesize% == 59 (GOTO NonExistant) ELSE (GOTO Existant) 


:Existant 
REM The below command parses Inactiveusers.txt for data and sends it to GFI via ECHO 
for /f "delims=" %%i in (%temp%/Inactiveusers.txt) do echo %%i 
REM Exit code for GFI 
exit 1000 


:NonExistant 
REM No inactive users. 
REM Exit code for GFI 
exit 0 
0

這將查找的結果至少兩條線,改變1 21尋找只有一個,
dsquery domainroot -inactive 60|file.bat
if %errorlevel%==1 echo no results
if %errorlevel%==0 echo results

file.bat
for %%i in (1 2) do set /p a=
if defined a exit 0 /b
exit 1 /b

+0

這是一個很好的答案,但是無論如何要把它全部打包到一個批處理文件中嗎? – Som3guy

+0

您可能可以將'dsquery'封裝在'for'循環中。 –

+0

我不提一個批處理文件將提供它自己的輸入。 – nephi12

0

應該做你問:

@echo off 
dsquery domainroot -inactive 60 |find /v "" >nul 
if errorlevel 1 (
    echo no result 
) else (
    echo results found 
) 
+0

謝謝你這爲我工作。我找到了一種方法來完成我所需要的腳本。 – Som3guy