2009-02-20 7 views
1

У меня есть летучая мышь файл со следующим содержимым:нечетное файл .bat поведение

set logfile= D:\log.txt 

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

когда я запускаю файл битой, хотя, я получаю следующее:

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. 

Я почти уверен, «Параметр неверен». из-за постороннего 1 там. Я также думаю, что это может иметь что-то с кодировкой .bat-файла, но я не могу понять, что вызывает его. Кто-нибудь когда-либо сталкивался с этим раньше или знал, что может вызвать его и как его исправить?

Редактировать

И урок, как всегда, проверьте, если его подключен первый, прежде чем идти с просьбой о помощи. Файл bat в управлении версиями использует D: \ log.txt, поскольку он предназначен для запуска с сервера, который содержит диск D. При тестировании моих изменений и запуске локально на моем компьютере, на котором нет диска D, я не смог внести изменения в использование C: \ log.txt, что и вызвало ошибку. Извините за то, что потратил время на то, спасибо за помощь, постарайтесь удержаться от желания слишком сильно опустить меня.

ответ

1

Это может показаться глупым вопросом, но существует ли существующий диск D: в контексте, в котором работает файл bat?

Как только у меня был случай, когда файл bat был использован в качестве командной строки задачи в диспетчере задач, но пользователь Run As был установлен локальным пользователем в поле, не предоставляя доступ к сетевым дискам.

Интерполированный для вашего случая, если диск D: был сетевым диском, запустив файл bat, как, скажем, учетная запись локального администратора на этом компьютере, а не в учетной записи пользователя домена, скорее всего, не сможет получить доступ к D :.

+0

спасибо, что было. Я заметил ошибку и исправил ее до вашего ответа, но вам удалось прибить ее. – shsteimer

3

Я сомневаюсь, что в этом проблема - я ожидаю, что командный процессор справится с этой частью для вас.

Вот доказательство этого работает для меня:

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% 

В командной строке:

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 
2

1 не является посторонним: он вставлен by cmd.exe означает stdout (вместо «>>», вы также можете написать «1 >>». сравните это с перенаправлением stderr: «2 >>»). поэтому проблема должна быть с вашими параметрами.

Смежные вопросы