%*
будет ловить каждую входную строку, переданную через пробел, enabledelayedexpansion
следует использовать, как вы делаете set
внутри блока кода (). Мы также заключаем переменные, включая имя переменной, в двойные кавычки:
@echo off
setlocal enabledelayedexpansion
for %%a in (%*) do (
set "string=%%~a"
set "string=!string:\=%%5C!"
echo !string! >> D:\Playground\test.txt
)
Как видите, вам нужно использовать цикл for
для итерации каждой из входных строк, т.е. %1
%2
, %3
и т. Д.
Как Примечание Вы также можете перетаскивать файлы в командный файл для получения результатов.
EDIT
Добавлено удаление кавычек в соответствии с запросом set "string=!string:"=!"
, но имейте в виду, что использование строк в качестве путей без их цитирования вызовет проблему в будущем, если пути содержат пробелы.
Для передачи в файл без перевода строки:
@echo off
setlocal enabledelayedexpansion
for %%a in (%*) do (
set "string=%%~a"
set "string=!string:\=%%5C!"
echo|set /p="!string! " >> D:\Playground\test.txt
)