Вы уже использовали необходимое расширение с задержкой в строке под вызовом командного файла:
@Echo Off
SetLocal EnableDelayedExpansion
For /F "UseBackQ Tokens=1-2 Delims=," %%A In ("sample.csv") Do (Set "search=profile"
Set "replace=profile-%%A"
Set "textfile=login.txt"
Set "newfile=login-%%A.txt"
Call "Repl.bat" "!search!" "!replace!" L<"!textfile!">"!newfile!"
Echo %%A %%B !search! !replace!)
Pause
Однако, поскольку вы уже используете Call
, возможно, вы сможете удвоитьсимволы в процентах:
@Echo Off
SetLocal EnableDelayedExpansion
For /F "UseBackQ Tokens=1-2 Delims=," %%A In ("sample.csv") Do (Set "search=profile"
Set "replace=profile-%%A"
Set "textfile=login.txt"
Set "newfile=login-%%A.txt"
Call "Repl.bat" "%%search%%" "%%replace%%" L<"%%textfile%%">"%%newfile%%"
Echo %%A %%B !search! !replace!)
Pause
Конечно, вы можете решить не устанавливать ненужные переменные, исключая зависимость от отложенного расширения:
@Echo Off
For /F "UseBackQ Tokens=1-2 Delims=," %%A In ("sample.csv") Do (
Call "Repl.bat" "profile" "profile-%%A" L<"login.txt">"login-%%A.txt"
Echo %%A %%B profile profile-%%A)
Pause
Или предварительно установить их, чтобы вы могли ими управлятьпроще, не устанавливайте их в цикле и уберите опоздание на расширение зависимости:
@Echo Off
Set "search=profile"
Set "replace=profile-%%A"
Set "textfile=login.txt"
Set "newfile=login-%%A.txt"
For /F "UseBackQ Tokens=1-2 Delims=," %%A In ("sample.csv") Do (
Call "Repl.bat" "%search%" "%replace%" L<"%textfile%">"%newfile%"
Echo %%A %%B %search% %replace%)
Pause