Как анализировать и отображать несколько путей к файлам, используя пакет - PullRequest
0 голосов
/ 09 мая 2018

Я создал командный файл, который будет отображать или выводить путь к файлу. Очевидно, я не могу распечатать путь, когда я отправляю несколько файлов в качестве параметров в указанный пакетный файл.

@echo off

setlocal ENABLEDELAYEDEXPANSION
set string=%1
set string=!string:\=%%5C!

@echo %string% > D:\Playground\test.txt

Любая помощь будет высоко ценится. Если что-то неясно, пожалуйста, дайте мне знать. Спасибо.

Примечание. Я отправляю файлы в командный файл, используя следующую процедуру:

  • Файл правой кнопкой мыши
  • Отправить на
  • Выберите пункт меню, созданный мной в sendTo, который передаст файл в пакетный файл

Я не знаю, помогает ли эта информация, но я не хотел оставлять ее вне моего вопроса.

1 Ответ

0 голосов
/ 09 мая 2018

%* будет ловить каждую входную строку, переданную через пробел, 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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...