[英]Using CSV variables in a looping batch file
我有一個 CSV 文件,其中包含 ftp 中指定文件夾的 IP 地址和 URL 列表。
我正在使用一種工具來處理將它們從一種類型轉換為另一種類型並重新加載回源的文件。
整個批次工作正常,但我需要導入 CSV,然后腳本循環遍歷 CSV 中每一行的進程。 截至目前,它只使用最后一行信息。
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "tokens=1-2 delims=," %%a in (Convert.csv) do (
set IPAddress=%%a
set ProjectURL=%%b
)
ECHO Retrieving File
start /wait tool.exe get "ssh %IPAddress%" "%~dp0%IPAddress%\Backup" "%~dp0%IPAddress%\Report\Backup" --ctrl_path="%ProjectURL%"
ECHO Retrieved
Timeout 2 > NUL
ECHO Please wait as we... Convert file after retrieval
ECHO Converting File
start /wait tool.exe convert "%~dp0%IPAddress%\Backup" "%~dp0%IPAddress%\Converted" "%~dp0%IPAddress%\Report\Conversion" "%~dp0HTML.xml" --cnx="%~dp0CNX.xml"
ECHO Converted
Timeout 2 > NUL
ECHO Please wait as we... Push the file
ECHO Pushing File
start /wait tool.exe put "ssh %IPAddress%" "%~dp0%IPAddress%\Converted" "%~dp0%IPAddress%\Report\Placement" --ctrl_path="%ProjectURL%"
ECHO Completed
我知道這會拉動並顯示變量正在更新,但我需要腳本的 rest 來為以這種方式讀取和處理的每一行運行。
我已經嘗試在 For /F 循環中包含整個腳本,它似乎並沒有等待其中的命令完成。 它對 CSV 的每一行都進行了爆破,因此什么也不做。
是否有循環機制在批處理中執行此操作?
我確實通過將整個代碼部分放在循環中並將變量內聯更改為,IPAddress? 和?ProjectURL,分別。 但它似乎很笨拙? 有沒有更清潔的方法? 這是我目前擁有的,它可以工作,但一點也不漂亮。
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "tokens=1-2 delims=," %%a in (Convert.csv) do (
set IPAddress=%%a
set ProjectURL=%%b
ECHO Retrieving File
start /wait tool.exe get "ssh !IPAddress!" "%~dp0!IPAddress!\Backup" "%~dp0!IPAddress!\Report\Backup" --ctrl_path="!ProjectURL!"
ECHO Retrieved
Timeout 2 > NUL
ECHO Please wait as we... Convert file after retrieval
ECHO Converting File
start /wait tool.exe convert "%~dp0!IPAddress!\Backup" "%~dp0!IPAddress!\Converted" "%~dp0!IPAddress!\Report\Conversion" "%~dp0HTML.xml" --cnx="%~dp0CNX.xml"
ECHO Converted
Timeout 2 > NUL
ECHO Please wait as we... Push the file
ECHO Pushing File
start /wait tool.exe put "ssh !IPAddress!" "%~dp0!IPAddress!\Converted" "%~dp0!IPAddress!\Report\Placement" --ctrl_path="!ProjectURL!"
ECHO Completed
)
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "tokens=1-2 delims=," %%a in (Convert.csv) do (
rem set IPAddress=%%a
rem set ProjectURL=%%b
ECHO Retrieving File
start /wait tool.exe get "ssh %%a" "%~dp0%%a\Backup" "%~dp0%%a\Report\Backup" --ctrl_path="%%b"
ECHO Retrieved
Timeout 2 > NUL
ECHO Please wait as we... Convert file after retrieval
ECHO Converting File
start /wait tool.exe convert "%~dp0%%a\Backup" "%~dp0%%a\Converted" "%~dp0%%a\Report\Conversion" "%~dp0HTML.xml" --cnx="%~dp0CNX.xml"
ECHO Converted
Timeout 2 > NUL
ECHO Please wait as we... Push the file
ECHO Pushing File
start /wait tool.exe put "ssh %%a" "%~dp0%%a\Converted" "%~dp0%%a\Report\Placement" --ctrl_path="%%b"
)
ECHO Completed
也就是說,只需在循環中將%IPAddress%
替換為%%a
並將%ProjectURL%
替換為%%b
。 %%a
和%%b
是簡單的字符串,沒有神奇的屬性,並且在定義do
動作的括號內的上下文中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.