2014-09-02 2 views
0

Привет У меня есть 2 пакетных файла, он отлично работает на одной машине, но не настолько совершенен на другом.Пакетный скрипт тот же на обоих ПК, но не работает?

Вот код.

set /p "ln=" <"C:\LoginSystem\userl.txt" 
set "%ln:&="&set "%" 
set realuser=%user:"=% 
echo %realuser% 

Так что на моей машине это показывает, как это:

 

    echo Liam 
    Liam 

На другой машине он показывает, как это:

 

    echo "= 
    "= 

Это точно такие же машины, только разница в том, один работает Windows 8 (рабочий) и другие окна 7 ("=)

EDIT:

Спасибо всем за ответы, мне удалось решить это, отредактировав способ создания файла userl.txt, чтобы он отображал только имя, например «Лиам» без кавычек. Затем используйте этот

набор/р пользователя =

Это, кажется, работает для того, что мне нужно S есть только одна ценность никогда не будет в этом файле.

Спасибо всем!

+0

Я думаю, подсветка синтаксиса SO поможет вам определить проблему ... –

+0

ли это набор realuser =% пользователей: «=% из-за» там? Я сделал это, чтобы удалить любой из имен, поскольку он должен быть удален, не уверен, почему он работает в Windows 8, а не в Windows 7, хотя –

+0

Повторите тест еще раз в новом окне cmd в Windows 8 и убедитесь, что он работает. – foxidrive

ответ

1

Простой echo %thisvariabledoesnoexist:"=% покажет тот же результат.

Причина наблюдаемого выхода заключается в том, что переменная %user%, которая, похоже, должна быть присвоена значение в строке set "%ln:&="&set "%", не получила никакого значения.

Проблема, вероятно, в том, что строка ввода не содержит требуемого значения или формат входной строки отличается от ожидаемой.

+0

Привет, MC ND, спасибо за ваш ответ, но это не решило мою проблему, файл userl.txt на обоих компьютерах одинаковый, а также сценарий. Любая идея, что может быть причиной этого? –

+0

@LeeWork, Можете ли вы укажите содержимое файла 'userl.txt'? –

+0

, если я поместил' Liam' в строку 1 в этом файле, тогда я получаю ту же ошибку в Windows 8.1, что OP получает в Windows 7, плюс сообщение об ошибке. – foxidrive

0

Как указал MC ND, критическая точка заключается в том, что переменная user должна быть определена для правильной работы. Если он не определен, вы получите результат своей проблемы.

Я не вижу, как идентичные файлы user1.txt, обрабатываемые на двух машинах с идентичными командами, могут давать разные результаты по мере их описания.

Удар, что, я могу думать об одном способе, но это длинный выстрел. Предполагается, что первые две строки должны определять переменную user, возможно, наряду с другими переменными. Но предположим, что первые две строки не определяют переменную user на любой машине. Возможно, user уже определен на машине, которая «работает» до того, как скрипт даже запущен, и он не определен на другом компьютере. Это единственное, что я могу придумать, чтобы дать результат, который вы описали.

Я вижу одно, что касается меня в вашем коде. Следующая строка кода подразумевает, что иногда вы получаете котировки на своем входе.

set realuser=%user:"=% 

Вы указываете, что кавычки в вашем значении мешают, поэтому вы их удаляете. Но вы снимаете их слишком поздно! В предыдущей строке могут не задаваться все значения правильно, если есть значения в значении ln.

Попробуйте следующее:

set /p "ln=" <"C:\LoginSystem\userl.txt" 
set "ln=%ln:"=%" 
set "%ln:&="&set "%" 
echo %user% 
Смежные вопросы