需要帮助创建批处理文件来调用联网服务器列表并在每个服务器中查找文件

时间:2012-05-01 22:42:53

标签: scripting batch-file

所以我想弄清楚这一点,我不认为我的脚本技能达到了标准。 :(

基本上我想要做的就是这个。

让脚本调用文件,该文件包含我想要查看的成员服务器列表。我想在每个服务器上搜索一个文件,然后吐出一个列出该文件路径的日志。

所以..例如,要引用的文件是text.txt,在该文件中列出服务器1,2,3。

我想扫描此路径中的每个服务器c:\temp\所有子目录并查找file.exe

然后吐出一个日志,显示服务器及其路径位置file.exe

server1 c:\temp\dir1\file.exe
server2 c:\temp\dir3\dir5\file.exe

任何人??? :(

提前感谢!

这是我到目前为止所做的......

@ECHO OFF
SET FLNM=file.exe
SET DRV=c
SET DIRS=temp
IF NOT DEFINED FLNM GOTO NAME
IF /I "%FLNM%"=="/Q" GOTO :EOF
SET FLNM=%FLNM: =.%
:DV
IF NOT DEFINED DRV GOTO DV
IF EXIST RESULTS.TXT DEL RESULTS.TXT
IF DEFINED DIRS SET DIRS=%DIRS: =.%
FOR %%D IN (%DRV%) DO (
    FOR %%G IN (%FLNM%) DO (
        IF DEFINED DIRS (
            FOR %%C IN (%DIRS%) DO (
                DIR %%D:\ /L /B /S|FINDSTR /I /E \%%C.\%%G>>RESULTS.TXT
            )
        ) ELSE (
            DIR %%D:\ /L /B /S|FINDSTR /I /E \%%G>>RESULTS.TXT
        )
    )
)
CALL :ZEROBYTE RESULTS.TXT
IF NOT EXIST RESULTS.TXT ECHO:"FILES NOT FOUND">>RESULTS.TXT
START NOTEPAD RESULTS.TXT
EXIT /B
:ZEROBYTE
IF %~Z1==0 DEL RESULTS.TXT
GOTO :EOF

我可以让它在本地运行,但我宁愿集中运行它。我似乎无法让它在所有目录下查看。如果我列出一个目录,它只在该根目录内扫描。

1 个答案:

答案 0 :(得分:1)

如果test.txt的格式如下:

server1
server2
server3

然后你可以这样做:

for /f %s in (test.txt) do dir/s/b \\%s\c$\temp\file.exe

请注意,您需要成为域管理员才能为远程Windows Vista / 7 / Server 2008 / R2计算机执行此操作,但对于Windows 2000 / XP / Server 2003,您只需拥有每台PC的本地管理员权限。 / p>

或者,您可以在每台PC上共享临时文件夹,例如使用net share temp$=C:\temp然后您可以使用\\%s\temp$\file.exe代替,那么您只需要正常的共享和文件权限。