Назад | Перейти на главную страницу

Почему выполнение командных файлов при перетаскивании и из командной строки отличается?

Хорошо, я пытался понять это часами, но безуспешно. Я создал командный файл, чтобы получить подробную информацию о VHD.

Все работает нормально и дает ожидаемые результаты при запуске из командной строки в командной строке. Однако, когда я использую перетаскивание из проводника (перетаскивание vhd-файла и перетаскивание в пакетный файл), пакетный файл выполняется без ошибок, но вывод (VHD.INFO) пуст.

Я в тупике.

Отредактировано, чтобы включить только поведение:

@echo off
cls
setlocal enabledelayedexpansion
set "_PATH.THIS=%~dp0"

echo HELP | diskpart > %_PATH.THIS%OUTPUT.TMP

TYPE %_PATH.THIS%OUTPUT.TMP
PAUSE

Чтобы продемонстрировать различное поведение, запустите командный файл из командной строки один раз (работает), а также запустите командный файл, дважды щелкнув в проводнике файлов (сбой во всех командах конвейера).

Когда вы запускаете командный файл из командной строки, в текущем каталоге находится ваш командный файл.

Когда вы перетаскиваете файл в пакетный файл, текущий каталог является путем перетаскивания файла.

Чтобы продемонстрировать это, попробуйте использовать следующий командный файл:

@echo off
cd
pause