簡體   English   中英

批處理文件循環遍歷目錄,並基於每個文件創建變量

[英]Batch file to loop through a directory and create a variable based on each file

我有一個帶有服務器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

)

顯然這是錯誤的,所以有什么想法/幫助嗎?

還沒有睾丸,但可能是正確方向的提示:

@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

據我所知,FOR / D僅對目錄執行,如果我理解您的問題,則您在“ 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命令中丟失

@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調用-不需要]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM