Questão Como passar um nome de arquivo como um argumento em uma chamada de arquivo .BAT


Eu tenho andado por aí com o DOSbox ultimamente, e uma tarefa particular que eu tenho feito é montar uma série de arquivos em lote para chamar as coisas para que eu possa salvar algumas cds. Um arquivo .bat típico pode se parecer com o seguinte:

cd wolf3d
wolf3d -goobers
cd ..

Uma coisa que se tornou um pouco chata é a falta de um editor de texto embutido que eu possa usar, como o pico / nano. Dito isto, eu Faz tenho QBASIC instalado, então uma opção que eu estava considerando era a configuração para que eu pudesse fazer uma chamada como a seguinte:

nano filename.bat

e abriria o arquivo no QBASIC.

Eu fiz um pouco de leitura sobre como funciona o script em lote, e parece que apenas adicionando um %1 para o script deve ser suficiente, como o seguinte:

cd qbasic
qbasic %1
cd ..

O que acaba acontecendo, no entanto, é se eu digito, digamos nano nano.bat então eu posso editar o arquivo de lote, ele acaba abrindo um novo, em branco nano.bat arquivo em vez disso.

Eu tentei procurar o que estou perdendo aqui, mas isso parece ser um pouco misterioso demais para localizar facilmente. Alguém pode apontar o que está faltando aqui?

Obrigado!


0


origem


DOS e Windows cmd não são a mesma coisa. Daí as muitas coisas também são diferentes scalibq.wordpress.com/2012/05/23/… - phuclv
Se você alterar o diretório atual no lote, precisará fornecer drive: \ path \ name.ext como um argumento, caso contrário, o Qbasic não poderá localizar o arquivo e criará um novo na pasta now current - LotPings
@LotPings Ao chamá-lo, venho usando o caminho relativo ao script, imaginando que, embora haja um cd no arquivo, ele ainda pegaria o caminho certo ao obter o valor da variável inicial. Então eu acho que você está sugerindo algo como qbasic ..\%1 para a segunda linha? Eu não estou em um lugar para testar isso neste momento, mas quando eu voltar para a minha mesa eu vou dar uma chance. Definitivamente faz muito sentido, agora que você aponta. - Kaji
@LotPings Isso fez isso! Se você pudesse repostar seu comentário como resposta, eu o aceitarei. - Kaji


Respostas:


Para elaborar um pouco mais como no meu comentário:

  • Se a passagem de um caminho relativo como um argumento para um lote que altera a pasta atual falhará se o passe não for relativo à nova pasta.
  • Alternativamente, passe um passe absoluto
  • ou não altere a pasta atual, se não for absolutamente necessário. Qbasic é um autônomo .exe arquivo que pode estar em algum lugar acessível pelo caminho. Para usá-lo como editor há um /Editor opção (acabou de verificar no VDOS Plus - um derivado DosBOX)

Então mude seu nano.bat para

@Qbasic.exe /Editor %1

fornecido Qbasic.exe é acessível através de uma pasta no caminho.


1





Tente porcentagens duplas, ou seja, %% 1. Os arquivos em lote do DOS não seguem exatamente as mesmas regras para os parâmetros que os seus equivalentes do shell.


0



Isso acabou abrindo um espaço em branco %1.BAS arquivo no QBASIC. Eu tentei reduzi-lo para apenas% 1 e que produziu NANO.BAT desta vez, no entanto, é um novo arquivo em branco, em vez daquele que estamos tentando atualizar. qbasic ../nano.bat, no entanto, abrir o arquivo corretamente, se eu quiser entrar primeiro em /qbasic. - Kaji
Engraçado que está abrindo um arquivo chamado nano.bas. Me faz pensar se% 1 na caixa dos não é o primeiro argumento para o trabalho em lote, mas o nome do próprio trabalho em lote. O que acontece se você usar% 2? - AlwaysLearning
Correção ligeira, está criando um espaço em branco nano.baT, não .baS; meu erro no post de abertura. Mudando para %2 resulta em nenhum arquivo sendo criado, como um simples qbasic lançamento. - Kaji