0

だから私はこれを理解しようとしていますが、私のスクリプトスキルは標準に達していないと思います。:(

基本的に私がやろうとしているのはこれです。

スクリプトでファイルを呼び出すと、ファイルには、調べたいメンバーサーバーのリストが含まれます。それらのサーバーのそれぞれでファイルを検索し、そのファイルのパスをリストするログを吐き出したいです。

たとえば、参照されるファイルは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

これをそれぞれでローカルに実行することはできますが、中央で実行します。また、すべてのディレクトリの下を調べることができないようです。ディレクトリをリストすると、そのルート内でのみスキャンされます。

4

1 に答える 1

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 に対するローカル管理者権限のみが必要です。

または、各 PC で一時フォルダーを共有することもnet share temp$=C:\tempでき\\%s\temp$\file.exeます。

于 2012-05-01T23:26:26.533 に答える