CMD/BAT - %userprofile% даёт несуществующий путь

Аватара пользователя
gurlov

CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение gurlov »

Здравствуйте.

Сделал простецкий bat-файл:



Код:

Код: Выделить всё

@echo off
echo %userprofile%
xcopy d:\log.txt "%userprofile%" /d /y /s /v
pause

Сохранял его и в 866 кодировке и в 1251, результат всегда один:

Путь %userprofile% определяется как C:\Users\Ђавс¬ и ни какого копирование по данному пути не производиться, ведь такого пути реально не существует.

Что это такое? как быть? прошу помощи

P.S.: В реальности путь профиля C:\Users\Артём[/i]
Аватара пользователя
Iska

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение Iska »

Цитата gurlov:



Путь %userprofile% определяется как C:\Users\Ђавс¬
CMD/BAT - %userprofile% даёт несуществующий путь




Как Вы это определили — так выглядит на экране? Или делали вывод в файл? Что говорит команда «chcp»?
Аватара пользователя
gurlov

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение gurlov »

Цитата gurlov:



Сохранял его и в 866 кодировке и в 1251, результат всегда один...
CMD/BAT - %userprofile% даёт несуществующий путь






Если в тексте пакетного файла нет кириллицы, то это не имеет смысла, так как файлы будут абсолютно идентичными (ANSI-кодировка).








Цитата gurlov:



...Путь %userprofile% определяется как C:\Users\Ђавс¬ и ни какого копирование по данному пути не производиться, ведь такого пути реально не существует.
CMD/BAT - %userprofile% даёт несуществующий путь






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








Цитата gurlov:





Код:

Код: Выделить всё

xcopy d:\log.txt "%userprofile%" /d /y /s /v

CMD/BAT - %userprofile% даёт несуществующий путь






Зачем Вам ключ "/s"? С этим ключом Вы не сможете копировать, например, так:

Код:

Код: Выделить всё

xcopy с:\log.txt "%userprofile%" /d /y /s /v

,

так как в результате получите ошибку:


Цитата:



Невозможно выполнить циклическое копирование

Скопировано файлов: 0.



.
Аватара пользователя
Georgio

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение Georgio »

Цитата Iska:



Как Вы это определили — так выглядит на экране? Или делали вывод в файл?
CMD/BAT - %userprofile% даёт несуществующий путь




так выглядит на экране, а если в файл (echo %userprofile% > tt.txt) то C:\Users\?*ўбї


Цитата Iska:



Что говорит команда «chcp»?
CMD/BAT - %userprofile% даёт несуществующий путь




Текущая кодовая страница: 866
Аватара пользователя
gurlov

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение gurlov »

Цитата gurlov:



...Путь %userprofile% определяется как C:\Users\Ђавс¬ и ни какого копирование по данному пути не производиться, ведь такого пути реально не существует.
CMD/BAT - %userprofile% даёт несуществующий путь






Команда "XCOPY" создаёт несуществующие пути, поэтому, если всё так, как Вы описываете, то в Вашем случае такой путь будет создан после запроса
Цитата:



Что означает C:\Users\Ђавс¬:

имя файла или каталога

(F = файл, D = каталог)?



или без такового при наличии ключа "/i".



Поэтому мне Ваше описание проблемы кажется странным и неполным.
Аватара пользователя
Georgio

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение Georgio »

Цитата gurlov:



а если в файл (echo %userprofile% > tt.txt) то C:\Users\?*ўбї
CMD/BAT - %userprofile% даёт несуществующий путь




Упакуйте этот файл в архив и прикрепите к сообщению.
Аватара пользователя
Iska

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение Iska »

Цитата Georgio:



Команда "XCOPY" создаёт несуществующие пути, поэтому, если всё так, как Вы описываете, то в Вашем случае такой путь будет создан после запроса
CMD/BAT - %userprofile% даёт несуществующий путь




да вы правы так и происходит, если запускать с админскими правами и отвечать на вопрос F или D то создаётся этот путь C:\Users\Ђавс¬ (я просто не стал вдаваться в подробности). но мне то нужен уже существующий C:\Users\Артём


Цитата Georgio:



Такого не должно быть, если, конечно, это не связано с какими-либо настройками консоли, записанными в реестр.
CMD/BAT - %userprofile% даёт несуществующий путь




чутьё мне подсказывает, что здесь собака зарыта. Какие по вашему настройки могут повлиять? где настройки консоли в реестре?


Цитата Iska:



Упакуйте этот файл в архив и прикрепите к сообщению.
CMD/BAT - %userprofile% даёт несуществующий путь




сделано.
Аватара пользователя
gurlov

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение gurlov »

Ах ты ж Изображение !!!!!!

Вот в чём причина: На компьютере стоит программа CLINK, которая меняет настройки CMD (в частности сохраняет историю команд), она то и мешала адекватно обрабатывать %userprofile%. Снёс программу - всё отлично работает.

Georgio, спасибо за наводку, про настройки CMD
Вложения
tt.rar
(87 байт) 0 скачиваний
tt.rar
(87 байт) 0 скачиваний
Аватара пользователя
gurlov

Re: CMD/BAT - %userprofile% даёт несуществующий путь

Сообщение gurlov »

Цитата gurlov:



...в частности сохраняет историю команд...
CMD/BAT - %userprofile% даёт несуществующий путь






Историю команд в течение консольной сессии всегда можно увидеть, выполнив команду

Код:

Код: Выделить всё

doskey /history

.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»