@echo Off
setlocal enabledelayedexpansion
set webServer="\\serverweb01a\location"
set AppServer="\\serverapp01a\location"
echo checking file on App servers
echo ------------------------------------ >>log.txt
echo ************App Servers************* >>log.txt
Call:FindModifiedDateTimeApp %AppServer%
echo checking file on web servers
echo ------------------------------------ >>log.txt
echo ************Web Servers************* >>log.txt
Call:FindModifiedDateTimeWeb %webServer%
set /p Done=Done...
goto:eof
:FindModifiedDateTimeWeb
set c=0
for /f "tokens=*" %%i in (File_List.txt) do (
set /a c+=1
set sources[!c!]=%%i
)
for /r "%~1" %%a in (*) do (
for /F "tokens=2 delims==" %%s in ('set sources[') do (
if "%%~nxa"=="%%s" (
echo %%~ta : %%~dpnxa >>log.txt
call:CheckOtherWebServers "%%~dpnxa" Serverweb01b
call:CheckOtherWebServers "%%~dpnxa" Serverweb01d
)
)
)
goto:eof
:CheckOtherWebServers
set server2=%~2
set Temps=%~1
set Temps=%Temps:Serverweb01a=!server2!%
for /f "delims=" %%f IN ("%Temps%") Do echo %%~tf : %%f >>log.txt
goto:eof
:FindModifiedDateTimeApp
set c=0
for /f "tokens=*" %%i in (Test.txt) do (
set /a c+=1
set sources[!c!]=%%i
)
for /r "%~1" %%a in (*) do (
for /F "tokens=2 delims==" %%s in ('set sources[') do (
if "%%~nxa"=="%%s" (
echo %%~ta : %%~dpnxa >>log.txt
call:CheckOtherAppServers "%%~dpnxa" ServerApp01b
call:CheckOtherAppServers "%%~dpnxa" ServerApp01d
)
)
)
goto:eof
:CheckOtherAppServers
set server2=%~2
set Temps=%~1
set Temps=%Temps:ServerApp01a=!server2!%
for /f "delims=" %%f IN ("%Temps%") Do echo %%~tf : %%f >>log.txt
goto:eof
以上是我用来搜索“file_List.txt”文件中提到的某些文件并查找其上次修改时间的批处理。(可能有一个文件或多个文件) 我需要在3个Web服务器和3个app服务器上找到这些文件。所有Web服务器和应用服务器的文件位置都相同。 所以,我打算按照以下方式做到这一点:
在网络服务器serverweb01a上搜索。获取在\ serverweb01a \ location \ bin \ abc.dll中找到的文件说文件的位置。在location \ serverweb01b \ location \ bin \ abc.dll,然后在\ serverweb01d \ location \ bin \ abc.dll
中搜索文件app server的类似步骤。
脚本工作得非常好,但速度有点慢。任何想法我怎样才能让它更快?