comportamento arquivo .bat estranho

votos
1

Eu tenho um arquivo bat com o seguinte conteúdo:

set logfile=  D:\log.txt

java com.stuff.MyClass %1 %2 %3  >> %logfile%

quando eu executar o arquivo bat no entanto, recebo a seguinte:

C:\>set logfile= D:\log.txt

C:\>java com.stuff.MyClass <val of %1> <val of %2> <val of %3>   1>>D:\log.txt
The parameter is incorrect.

Tenho quase certeza o O parâmetro está incorreto. é devido ao estranho 1 lá. Eu também acho que isso pode ter algo com a codificação do arquivo .bat, mas eu não consigo descobrir o que está causando isso. Qualquer um já se deparou com isso antes ou saber o que pode estar causando isso e como corrigi-lo?

Editar

E a lição, como sempre, é verificar se o seu conectado primeiro antes de ir pedir ajuda. O arquivo bat, no controle de versão, usa D: \ log.txt porque se destina a ser executado a partir do servidor que contém uma unidade D. Ao testar as minhas alterações e executado localmente, no meu computador que não tem uma unidade D, não consegui fazer a mudança de usar C: \ log.txt que é o que causou o erro. Desculpe por desperdiçar seu tempo, obrigado pela ajuda, tente resistir ao impulso de me downvote demais.

Publicado 20/02/2009 em 17:59
fonte usuário
Em outras línguas...                            


3 respostas

votos
3

Duvido que esse é o problema - Espero que o processador de comando para lidar com essa parte para você.

Aqui é evidência de que trabalhar para mim:

Test.java:

public class Test
{
    public static void main(String args[]) throws Exception
    {
        System.out.println(args.length);
        for (String arg : args)
        {
            System.out.println(arg);
        }
    }
}

test.bat:

set logfile= c:\users\jon\test\test.log
java Test %1 %2 %3 >> %logfile%

Na linha de comando:

c:\Users\Jon\Test> [User input] test.bat first second third

c:\Users\Jon\Test>set logfile= c:\users\jon\test\test.log

c:\Users\Jon\Test>java Test first second third  1>>c:\users\jon\test\test.log

c:\Users\Jon\Test> [User input] type test.log
3
first
second
third
Respondeu 20/02/2009 em 18:07
fonte usuário

votos
2

o 1 não é estranha: ele é inserido por cmd.exe significando stdout (. em vez de ">>", você também pode escrever "1 >>" Compare isso com redirecionando stderr: "2 >>"). então o problema deve ser com os seus parâmetros.

Respondeu 20/02/2009 em 18:12
fonte usuário

votos
1

Isto pode parecer uma pergunta estúpida, mas existe uma D existente: unidade no contexto de que o arquivo bat é executado em?

Uma vez eu tive um caso em que um arquivo de morcego foi usado como a linha de uma tarefa dentro do Gerenciador de Tarefas do comando, mas o Executar como usuário foi definida para um usuário local no caixa, não dando qualquer acesso a unidades de rede.

Interpolados para o seu caso, se a unidade D: eram uma unidade de rede, executando o arquivo bat como, por exemplo, a conta de administrador local na máquina, em vez de uma conta de usuário de domínio provavelmente deixar de ter acesso a D :.

Respondeu 20/02/2009 em 19:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more