2014-11-06 103 views
0

我有一个服务器的IP地址的列表,下面的代码(我已经从其他编码报废一起)一个文本文件中的变量遍历并带来回列表中的每个服务器命名文件的修改日期...批处理文件中循环,并创建一个基于每个文件

@ECHO On 
SETLOCAL 
FOR /f %%a IN (C:\Scripts\Servers.txt) DO (
CALL :getmod %%a 
) 

GOTO :EOF 

:getmod 
SET Server=%1 
SET File=Abs_Client.exe 

FOR %%i IN ("\\%Server%\C$\Com_Dir\%File%") DO SET modif_time=%%~ti 
Echo %Server% %File% %modif_time% >> "C:\Scripts\Server_App_Mod_date.txt" 

GOTO :eof 

这伟大工程......但是,我想要做的就是创建一个围绕它的另一个循环这对于创建一个变量每个文件放在一个目录中,并将其传递到上面的代码中,而不必像上面为单个文件那样手动更改'SET File'。

沿着线的东西;

@ECHO On 
SETLOCAL 

FOR /D %VAR IN ("\\Network_Location\AppMedia\App Source Files\Prod Apps\Server_Update") DO (

FOR /f %%a IN (C:\Scripts\Servers.txt) DO (
CALL :getmod %%a 
) 

GOTO :EOF 

:getmod 
SET Server=%1 
SET File=%VAR 

FOR %%i IN ("\\%Server%\C$\Com_Dir\%File%") DO SET modif_time=%%~ti 
Echo %Server% %File% %modif_time% >> "C:\Scripts\Server_App_Mod_date.txt" 

GOTO :eof 

) 

显然这是错误的,所以任何想法/帮助吗?

回答

1

没有testet,但也许在正确方向上的暗示:

@ECHO ON 
SETLOCAL 

FOR /F "TOKENS=*" %%F IN ('DIR "\\Network_Location\AppMedia\App Source Files\Prod Apps\Server_Update" /s /b /a:-d') DO (
    FOR /F %%A IN (C:\Scripts\Servers.txt) DO (
    CALL :getmod %%A "%%~nxF" 
) 
) 

GOTO :EOF 

:getmod 
SET Server=%1 
SET "tmpFile=%~2" 

FOR %%I IN ("\\%Server%\C$\Com_Dir\%tmpFile%") DO ECHO %Server% %tmpFile% %%~tI >> "C:\Scripts\Server_App_Mod_date.txt" 
GOTO :EOF 

据我所知,/ d只执行了directorys,如果我明白你的问题,你必须在文件中“ Prod Apps \ Server_Update“,为每个你想从目标服务器获取文件日期/时间......对吗?

编辑:

也许这个工程太:

FOR /F "TOKENS=*" %%F IN ('DIR "\\Network_Location\AppMedia\App Source Files\Prod Apps\Server_Update" /s /b /a:-d') DO (
    FOR /F %%A IN (C:\Scripts\Servers.txt) DO (
    FOR %%X IN ("\\%%A\C$\Com_Dir\%%~nxF") DO ECHO %%A %%~nxF %%~tX >> "C:\Scripts\Server_App_Mod_date.txt" 
) 
) 

而不:getmod

编辑:/ B开关从第一DIR命令在第二个建议

+0

优秀:)第一个完美的作品,非常感谢:)第二只是重复“AppMedia是AppMedia“在结果文本文件? – Foxb2328 2014-11-06 15:11:04

+0

aah ...在第一个DIR-Command中缺少/ b-switch ...不知道是否全部......没有尝试,只有硬编码。 :) 我会纠正脚本,请试试:)我没那么熟悉这些文件的操作for循环。 (获得例如时间戳) 或许for循环的第三不能有引号...:/ – BaBa 2014-11-06 15:17:04

+0

尼斯之一! :)现在也是一种享受,似乎也运行得更快:)再次感谢。 – Foxb2328 2014-11-06 15:42:11

0
失踪
@ECHO On 
SETLOCAL 
FOR /f %%a IN (C:\Scripts\Servers.txt) DO (
FOR /f "delims=" %%i IN ('dir /b/a-d "\\%%a\C$\Com_Dir\*"') DO Echo %%a %%i %%~ti >> "C:\Scripts\Server_App_Mod_date.txt" 
) 
GOTO :EOF 

应该工作,IIUC。无法测试,我怕......

[编辑 - 删除调用getmod - 不需要]

+0

感谢您的帮助...不能让它工作,我不知道在哪里把源代码目录读取?我的'代码'显然很弱...... – Foxb2328 2014-11-06 15:13:01

相关问题