Пакет DOS: различное поведение между командной строкой и перетаскиванием

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

Очень простой пакетный файл (test_echo.cmd) выглядит следующим образом:

@echo OFF
echo %1 > echo_arg_in_file.txt`

В командной строке

C:\rep>test_echo.cmd "C:\rep\fichier de test.txt"`

создает файл echo_arg_in_file.txt с записью "C:\rep\fichier de test.txt" внутри.

Но при перетаскивании файла "C:\rep\fichier de test.txt" на батник ничего не происходит... (тест на удаление > echo_arg_in_file.txt был сделан ранее и хорошо отображает "C:\rep\fichier de test.txt")

Любое объяснение?


person Chamade admin    schedule 21.06.2015    source источник


Ответы (2)


Я не уверен в вашей точной среде, но если я должен поспорить, текущий активный каталог является проблемой

Замените test_echo.cmd на

@echo off
    for %%a in (.) do echo %%~fa
    pause

Затем запустите файл, дважды щелкнув его и перетащив файл. В обоих случаях вы увидите текущий активный каталог для запущенного процесса cmd.

Почему это актуально? Поскольку вы не указали путь в перенаправлении исходного файла, этот файл будет создан в текущем активном каталоге, что, возможно, не соответствует вашим ожиданиям.

Дополнительную информацию можно найти здесь

Для быстрого решения,

@echo OFF
> "%~dp0\echo_arg_in_file.txt" echo %1

это создаст файл в той же папке, в которой хранится пакетный файл

person MC ND    schedule 21.06.2015

Какая версия Windows. Vista не может перетаскивать в командную строку из соображений безопасности. Ограниченные возможности есть в более поздних версиях (потому что мы все ныли).

До Vista это было то же самое, что и ввод имени файла при перетаскивании в окно.

Если говорить о ярлыке, каждый файл является одним параметром (для этого используйте команду shift).

person user5032396    schedule 21.06.2015