
Ich möchte ein Skript für die Windows-Eingabeaufforderung schreiben, das eine .txt (Dateiname) als Argument verwendet, die Datei zeilenweise liest und jede Zeile an einen Befehl übergibt. Wenn mein Skript FILE.txt
so aussieht:
LINE1
LINE2
LINE3
.
.
.
Es läuft:
command_name argument --option LINE1
, Dann
command_name argument --option LINE2
, nach erfolgreicher Ausführung des ersten Befehls. UndFühren Sie den gleichen Befehl weiterhin mit unterschiedlichen Argumenten aus.Zeile für Zeile ausgewählt aus FILE.txt
.
DerDie Linux/UNIX-Version dessen, was ich erreichen möchte, sieht folgendermaßen aus:
cat FILE.txt | xargs -L 1 echo --option | xargs -L 50 command_name argument
Antwort1
MitPower Shell:
foreach($line in GC PathFolder\File.txt) {Write-Host command_name argument --option $Line}
MitBefehlszeile: VerwendenFOR /f
For /f "delims=" %a in ('Type "File.txt"') do (echo command_name argument --option %a)
Mit einemBatch-Datei:
@echo off
@For /f "delims=" %%a in ('Type "File.txt"') do ( echo command_name argument --option %%a)
pause
Oder sieheEine Datei zeilenweise lesen und in einer variablen Batchdatei speichern
Sie können so etwas tun:
@echo off
Color 0B & Title Read and parse each line of a text file as an argument to command prompt
set "File2Read=file.txt"
If Not Exist "%File2Read%" (Goto :Error)
rem This will read a file into an array of variables and populate it
setlocal EnableExtensions EnableDelayedExpansion
@For /f "delims=" %%a in ('Type "%File2Read%"') do (
set /a count+=1
set "Line[!count!]=%%a"
)
REM Display array elements
@For /L %%i in (1,1,%Count%) do (
echo "Var%%i" is assigned to ==^> "!Line[%%i]!"
echo command_name argument --option !Line[%%i]!
)
pause>nul
Exit
::-------------------------------------------
:Error
cls & Color 4C
echo(
echo The file "%File2Read%" dos not exist !
Pause>nul
exit /b
::-------------------------------------------