Простой пакетный файл не работает на Windows Server 2012

19227
user340089

На Windows 2012 Server из вошедшего в систему администратора (локального и доменного) создал пакетный файл «test.bat», перенаправив ввод с консоли в файл:

echo Hello 

Когда запускается из командной строки PowerShell как .\test.bat, он отображает:

'■e' is not recognized as an internal or external command, 

Пакетный файл находится в каталоге C: \ users \% username% вошедшего в систему пользователя.

Файл был создан из консоли, таким образом:

echo "echo Hello" > test.bat 

а затем редактировать с помощью блокнота. Выглядело хорошо в блокноте ... ничего необычного.

Есть идеи о том, что происходит?

Редакция:

Согласно предложению, я изменил ввод командной строки, чтобы удалить кавычки. Поэтому введите команду следующим образом: echo echo Yowzer > test.bat Run as: .\test.batи получите тот же ответ, что и выше. Также обратите внимание, что если я отредактирую в Блокноте вышеупомянутый test.bat (т. Е. Созданный в строке cmd) и перезапущу, он все равно вернет ответ мусора. Однако, если я создаю / сохраняю файл в Блокноте с самого начала, он работает правильно.

Кто-нибудь может продублировать это?

0
"C: \ Users \% имя пользователя%" ?? не в subdir, как документы? Вы перешли в папку с файлом bat, а затем запустили ". \ test bat"? И вы выполняете это с консоли Poweshell, верно? Logman 9 лет назад 0
Файл bat был создан и запущен из C: \ subdir. Для создания файла bat использовались два метода: (1) `echo stuff> bat.bat` с клавиатуры и (2) запись в Notepad ++ и сохранение в виде файла bat. Все действия по приглашению cmd выполнялись с консоли PoSH. user340089 9 лет назад 0
-1 за отказ от вопроса, тем самым уменьшая его значение barlop 8 лет назад 0

4 ответа на вопрос

1
xXhRQ8sD2L7Z

It looks like the redirect > has encoded your batch file in unicode, when it should be ascii. In Powershell, use Out-File instead of the redirect like this:

"echo test" | Out-File test.bat -Encoding ascii 

Running the batch file after the following encoding will reproduce the error:

"echo test" | Out-File test.bat -Encoding unicode 
1
Mark Creamer

Had the same problem, thought I was crazy.

Make your batch file on another computer. I had the same issue opening Notepad and typing the commands normally. It always gave me the same message. Once I recreated the batch file (do not copy the old file) on my local Win7 device, copied it back to my Win 2012R2 server, worked like a champ.

Я понятия не имею, почему, но это сработало для меня в аналогичной ситуации. boot13 5 лет назад 0
0
barlop

Скорее всего, у вас где-нибудь есть забавный персонаж Я уверен, что если вы это сделаете, xxd -p blah.batто увидите в своем командном файле несколько забавных персонажей.

Затем вы можете подумать о том, как они туда попали и как их удалить .. И это можно сделать с помощью xxd и sed. Или, возможно, другим способом, если вы знаете, что это за персонажи.

Вы можете получить xxd, скачав VIM 7.X или из cygwin.

Или вы можете найти шестнадцатеричный редактор и поместить командный файл в шестнадцатеричный редактор.

Вы говорите, что создаете командный файл из stdin .. Ну, вы могли бы уточнить, что именно вы подразумеваете под этим, например, подразумеваете ли вы под copy con blah.batCTRL-Z? Но каким бы образом вы ни имели в виду, он помещает в файл несколько забавных символов.

добавленной

Я вижу, вы заявляете, что вы сделали это с эхо и перенаправления ..

Вы можете легко упростить это для устранения неполадок

Пытаться type blah.bat

если это показывает забавного персонажа, попробуйте echo H>blah.batзатем создать его до того, что вы набрали ... и посмотрите, в какой момент вы получите забавного персонажа.

Другая вещь для экспериментов - это кодирование ввода и вывода

попробуйте chcp. chcp 850 и chcp 65001 и посмотрите, видите ли вы какие-либо различия. chcp изменит входную и выходную кодировку, но chcp покажет только входную кодировку.

Если вы посмотрите на мой ответ здесь https://stackoverflow.com/questions/30904504/font-is-right-why-cant-i-get-this-unicode-character-to-display-in-this-c-sharp / 32418703 # 32418703 вы видите программу с именем chcpa, которую я написал некоторое время назад, и вы можете использовать ее для более гибкого изменения кодировки ввода и вывода, чем chcp. Или вы можете просто использовать chcp, но если вы обнаружите, что chcp ограничивает вас в устранении неполадок, вы можете попробовать chcpa.

Но одним из лучших инструментов для устранения неполадок будет шестнадцатеричный редактор или xxd, как уже упоминалось. И пытаюсь упростить вашу линию еще дальше, как это предлагается.

Подобные шаги помогут вам определить, где находится ошибка. И комментарий, когда вы попробуете что-нибудь здесь или дальше.

-1
Keltari

Echo doesnt use quotation marks. Take out the double quotes and it will work.

echo echo hello > test.bat 

Echo looks for the string after echo and the space, the quotes break the string.

More on echo.

Это не решило проблему. Введено: `echo echo Yowzer> test.bat` Запущено как:`. \ Test.bat` и все равно получило тот же ответ, что и выше. Обратите внимание, что если я отредактирую файл в Блокноте, он все равно выдаст ответ «мусор». Однако, если я создаю / сохраняю файл в блокноте с самого начала, все хорошо. Кто-нибудь может продублировать это? user340089 9 лет назад 0
странный. это сработало для меня. Keltari 9 лет назад 0
Удалось ли вам воспроизвести проблему, с которой я столкнулся? То есть, вы видели странный результат, о котором говорилось выше, при использовании кавычек? user340089 9 лет назад 0
да. Я удалил цитаты, и все заработало Keltari 9 лет назад 0
-1 Он сказал: «Ты сумел воспроизвести проблему, с которой я столкнулся?» И проблема, с которой он столкнулся, была в этих забавных персонажах. И вы ответили, сказав "да ...". И из его вопроса ясно, и еще более ясно из его ответа, что то, что вы говорите о «кавычки ломать строку», это абсолютно и, очевидно, не проблема barlop 8 лет назад 0

Похожие вопросы