我想從文本文件中一次設置一行變量,使用此變量運行特定命令,然後循環,抓取第二行,處理命令等等直到文件結束。將TXT文件解析爲批處理文件
該批處理文件運行良好並要求用戶輸入,然後使用輸入作爲變量進行處理,完全沒有問題。該腳本首先獲取計算機名稱,然後複製文件安裝到本地機器上使用WMIC安裝MSI:
@echo off
SET /P computer=Enter Computer Name
echo.
XCopy "\\server\netlogon\temp\*.*" "\\%computer%\c$\temp\*.*" /E /C /H /R /Y
WMIC /Node:"%computer%" product call install true,"","c:\temp\msi_to_install.msi"
的文本文件將是這個樣子:
PC-01
PC-02
PC-27
Odd-PC
然而,當我試圖引入一個「for」循環時,我可以一次處理一個或多個機器,但沒有任何反應。即使我在文件中只有一行,我也無法使其工作。這是我曾嘗試:
@echo off
For /F %%i in (c:\test.txt) do (
set computer=%%i
echo.
XCopy "\\server\netlogon\temp\*.*" "\\%computer%\c$\temp\*.*" /E /C /H /R /Y
WMIC /Node:"%computer%" product call install true,"","c:\temp\msi_to_install.msi"
)
爲了記錄我曾嘗試與變量和%%computer%%
與!computer!
沒有成功。
我還試圖下文中也具有或不具有在「SET」命令/ P:
@echo off
SET /P computer=<"c:\test.txt"
echo.
XCopy "\\server\netlogon\temp\*.*" "\\%computer%\c$\temp\*.*" /E /C /H /R /Y
WMIC /Node:"%computer%" product call install true,"","c:\temp\msi_to_install.msi"
我希望任何建議或輸入。
好的,謝謝你。現在我收到一個有趣的錯誤: '無效的驅動器規範' 但是,我的初始腳本示例針對我的文本文件中列出的相同機器運行正常。 – Stephen
我已經從第二個腳本中刪除了多餘的'set'。你沒有指出你正在使用哪個腳本,也不知道這個錯誤是否出現在'test.txt'的* some *或* all *數據行上。我會將'xcopy'更改爲'echo xcopy'和'wmic'以'echo wmic'並查看是否報告了預期的指令 - 如果沒有,是否有任何失敗有共同之處? – Magoo
這兩個例子都被使用了,我不再因爲我無意中刪除了一行而出錯。當我現在執行此操作時,根本沒有任何反應,我在一秒鐘內回覆提示,完全沒有錯誤信息。我真的難住這一個。 – Stephen