2015-01-13 4 views
0

У меня возникла странная проблема при запуске файла bat с кодом C# (Также из cmd.exe и окна Run). Прежде всего, мой файл летучая мышь выглядит следующим образомстранное поведение при запуске файла bat bat

file_copy.bat

NET USE %1 /USER:%2 %3 COPY /Y %4 %5 NET USE %1 /DELETE PAUSE

я включил этот летучая мышь файл в визуально студии 2013, и установить Copy To Output Directory в Always Copy из свойств. Мой код для запуска этой летучей мыши файл выглядит следующим образом

  string args = "\"\\\\192.168.54.196\\c$\" \"user\" \"123456\" \"\\\\192.168.54.196\\c$\\paykiosk\\logs\\pgw_150113.log\" \"C:\\Users\\IlhamIs\\AppData\\Local\\Temp\\pgw_150113.log\"" 
      var processInfo = new ProcessStartInfo 
      { 
       UseShellExecute = false, 
       FileName = "file_copy.bat", 
       Arguments = args 
      }; 

      var process = new Process { StartInfo = processInfo }; 
      process.Start(); 

Я строю свой проект и, очевидно, file_copy.bat копируется в bin\debug каталог (в моем случае). Затем я запускаю приложение, файл bat выполняется, но первая команда каким-то образом модифицирована в runtume, поэтому возникает ошибка, указывающая 'я╗┐NET' is not recognized as an internal or external command, operable program or batch file.. Это wierd, я╗┐ записывается в начало первой команды. Вот полный вывод, который я получил:

C:\Users\IlhamIs\Desktop\test\bin\debug>я╗┐NET USE "\\192.168.54.196\c$" /USER:"user" "123456" 
'я╗┐NET' is not recognized as an internal or external command, 
operable program or batch file. 

C:\Users\IlhamIs\Desktop\test\bin\debug>COPY /Y "\\192.168.54.196\c$\paykiosk\logs\pgw_150113.l 
og" "C:\Users\IlhamIs\AppData\Local\Temp\pgw_150113.log" 
Logon failure: unknown user name or bad password. 

C:\Users\IlhamIs\Desktop\test\bin\debug>NET USE "\\192.168.54.196\c$" /DELETE 
The network connection could not be found. 

More help is available by typing NET HELPMSG 2250. 


C:\Users\IlhamIs\Desktop\test\bin\debug>PAUSE 
Press any key to continue . . . 

Затем создайте файл летучей мыши в bin\debug каталоге с тем же скриптом (file_copy_2.bat), обратите внимание, что это не создается визуально студией. На этот раз я меняю FileName = "file_copy.bat" на FileName = "file_copy_2.bat", чтобы сделать мое приложение для запуска созданного мной файла, а затем запустил приложение. Это выглядит нелепо, но это сработало, все 3 команды выполнены успешно.

Это действительно странно. Что мне не хватает? Визуальная студия делает что-то особенное с файлом bat во время компиляции и копирования файла в выходной каталог? Оба file_copy.bat и file_copy_2.bat одинаковы (я проверял атрибуты на всякий случай, тоже то же самое). Созданная визуальная студия файла не выполняет первую команду, но тот, который я создал, преуспевает. Зачем?

FYI, код кодовой страницы вернулся из команды CHCP является 866. Я попытался 65001, который является UTF-8, но у меня есть подобный результат, различные символы, написанные в начале команды вместо я╗┐

Пожалуйста, прокомментируйте ниже, если детали вопроса не ясно вам, как я мог бы объяснить неправильно

заранее спасибо

+1

посмотрите на [это] (http://superuser.com/questions/113696/strange-symbols-while-executing-win-command-file) вопрос и ответ на SuperUser, у него такая же проблема с тем же странным символы – grabthefish

+1

Это выглядит как знак байтового байта. Используйте текстовый редактор, который можно сохранить без спецификации. Как блокнот ++. Или сохранить как ASCII/ANSI. – spender

+0

Я сохранил файл без спецификации, и он сработал!Благодарим вас за помощь, я много googled, но не нашел этот вопрос, размещенный на SuperUser, потратил весь день на решение этого вопроса. –

ответ

0

проблема явно в вашем file_copy.bat.
Вы можете пропустить его, запустив файл file_copy.bat из командной строки (с соответствующими параметрами).

У вас создание файла_copy или скопировать в отставку из какого-либо места в проекте?

Обновление: Из комментариев я понимаю это. Проблема заключается в кодировании файла file_copy.bat.
При преобразовании файла bat в UTF-8 без спецификации проблема решена.

+1

, как я упомянул в своем вопросе, я также попытался запустить этот файл bat из командной строки и запустить окно. И, да, я создаю новый bat-файл с нуля. Те же результаты с копией/вставкой. Проблема заключалась в кодировке, которую я предоставил, по умолчанию она сохранена с помощью спецификации, я попытался сохранить файл с кодировкой UTF-8 без спецификации и решить проблему. Спасибо за ответ –

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