簡體   English   中英

多次將參數傳遞給Windows批處理文件

[英]pass parameters to windows batch file multiple times

我在將參數傳遞給批處理文件時遇到問題。參數文件將具有n行數,我想執行bacth來讀取第一行,將其作為.bat中的參數並執行。讀取下一行它再次作為第二個參數執行。同樣,如果在文本文件中找到n行,則應執行n次(例如,如果文本文件有100行,.bat中的循環執行應繼續執行100次)。 我有這樣的腳本,

@echo off

setlocal enabledelayedexpansion

set file1=D:\Batch\parm.txt

set /a cnt=0

for /f "tokens=*" %%a in (%file1%) do (

set %file1% =%%a

echo !%file1%!
)

FOR /F "tokens=1 delims=|" %%G IN (%file1%) DO set a1=%%G

FOR /F "tokens=2 delims=|" %%K IN (%file1%) DO set a2=%%K

FOR /F "tokens=3 delims=|" %%I IN (%file1%) DO set a3=%%I

echo parameter file found

echo reading parameters to pass through

echo (%a1%,%a2%,%a3%)>>D:\Batch\output.txt

goto break

:break

set /a cnt+=1
exit /b

我的參數文件輸入為

"India"|"Australia"|"Africa"

"I1"|"A1"|"A11"

"I2"|"A2"|"A12"

我的輸出應該是:

找到參數文件

讀取要傳遞的參數

“印度”,“澳大利亞”,“非洲”

找到參數文件

讀取要傳遞的參數

“I1”, “A1”, “A11”

找到參數文件

讀取要傳遞的參數

“I2”, “A2”, “A12”

我目前僅獲得最后一個參數作為輸出。請幫助我更正腳本。

您的第一個FOR循環很瘋狂-它嘗試創建一個名稱與其值匹配的變量。 我看不出它有什么作用。

您的邏輯對於每個參數都是錯誤的。 您在循環中讀取了第一個參數的整個文件。 該循環結束后,對於最后找到的行,您只有一個參數值。 然后,對第二個和第三個參數執行相同的過程。 那行不通。

您應該在一個循環中讀取所有3個參數。

@echo off
setlocal
set "file1=D:\Batch\parm.txt"
if exist "%file1%" (
  echo parameter file found
  echo reading parameters to pass through
  set /a cnt=0
  for /f "usebackq tokens=1-3 delims=|" %%A IN ("%file1%") do (
    echo (%%A,%%B,%%C^)
    set /a cnt+=1
  )
)>d:\batch\output.txt
echo cnt=%cnt%
exit /b
@echo off

setlocal enabledelayedexpansion

set file1=D:\Batch\parm.txt

set /a cnt=0

for /f "tokens=*" %%a in (%file1%) do (

set %file1%=%%a

echo !%file1%!
)

FOR /F "tokens=1,2,3 delims=|" %%G IN (%file1%) DO set a1=%%a&set a2=%%b&set a3=%%c

echo parameter file found>>D:\Batch\output.txt

echo reading parameters to pass through>>D:\Batch\output.txt

echo (%a1%,%a2%,%a3%)>>D:\Batch\output.txt

goto break

:break

set /a cnt+=1
exit /b

暫無
暫無

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

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