Хорошо, я пытался понять это часами, но безуспешно. Я создал командный файл, чтобы получить подробную информацию о 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