Por que a execução de arquivos em lote é diferente entre o drag & drop e a linha de comando?

1

Ok, tenho tentado descobrir isso por horas sem progresso. Eu criei um arquivo de lote para obter detalhes de um VHD.

Tudo funciona bem e produz os resultados esperados quando executado a partir da linha de comando em um prompt de comando. No entanto, quando eu uso arrastar e soltar do explorador de arquivos (arrastando um arquivo vhd e soltando no arquivo de lote), o arquivo de lote é executado sem erros, mas a saída (VHD.INFO) está vazia.

Estou perplexo.

Editado para incluir apenas o comportamento:

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

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

TYPE %_PATH.THIS%OUTPUT.TMP
PAUSE

Para demonstrar o comportamento diferente, por favor, execute o arquivo de lote na linha de comando uma vez (funciona) e também execute o arquivo de lote clicando duas vezes no explorador de arquivos (falha em todos os comandos de tubulação).

    
por Dharma Leonardi 28.05.2014 / 14:11

1 resposta

1

Quando você executa o arquivo em lote a partir da linha de comando, o diretório atual é o local do arquivo em lote.

Quando você arrasta e solta um arquivo no arquivo de lote, o diretório atual é o caminho do arquivo de arrastar e soltar.

Para demonstrar isso, experimente com o seguinte arquivo em lotes:

@echo off
cd
pause
    
por 28.05.2014 / 14:23