--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

Помогит с батником

Сисадминское
11
30
С друзьями на NN.RU
В социальных сетях
Поделиться
RealVaVa
15.06.2017
Чувствую себя оленем
Суть - взять значение текущего расположения папки рабочего стола из реестра, и копирнуть туда из текущей для батника папки файл.
For /F "Tokens=2* Delims= " %%I In ('Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Desktop"') Do Set desktop-path=%%J
echo %desktop-path%
copy file.txt %desktop-path%
Выдача
%USERPROFILE%\Desktop
Системе не удается найти указанный путь.
Скопировано файлов: 0.
K0IIIAK
15.06.2017
а зачем вообще из реестра что-то дёргать?
%USERPROFILE%\Desktop и так заведомо известна
RealVaVa
15.06.2017
в 10-ке не известна, как оказалось
Я по началу так и сделал, но файл копировался хрен пойми куда.
propeller
16.06.2017
В 10ке все норм. Ставь оригинальный образ, а не сборку. Ну или объяви %USERPROFILE% в системе и перезагрузи комп.
RealVaVa
16.06.2017
Оригинальный OEM образ. Сборками не балуюсь.
Warwar
15.06.2017
есть 2 предположения:
1. не может сделать двойную подстановку в одной команде copy file.txt %desktop-path%
2. не хватает слэша в конце copy file.txt %desktop-path%\

а просто команда "copy file.txt %USERPROFILE%\Desktop" работает?
RealVaVa
15.06.2017
Warwar писал(а)
copy file.txt %USERPROFILE%\Desktop

да, работает и слэш не помогает - сам думал на это.
K0IIIAK
15.06.2017
что я делаю не так?

D:\>echo 12345 > 1.txt

D:\>dir
Том в устройстве D имеет метку Новый том
Серийный номер тома: D415-4865

Содержимое папки D:\

15.06.2017 13:16 8 1.txt
...

D:\>copy 1.txt %USERPROFILE%\Desktop
Скопировано файлов: 1.


там возникает нюанс при переходе между дисками, ибо "cd" не работает
Warwar
15.06.2017
В батнике получается двойная подстановка, в bash для этого надо сделать eval.
Подозреваю, в винде тоже надо что-то ещё подставить.
RealVaVa
15.06.2017
Гуглю на эту тему - ничего внятного найти не могу.
Вот, например - stackoverflow.com/questions/34103871/batch-dynamic-variable-name-eval-equivalent
Warwar
15.06.2017
Ниже Кошак написал же...
Set desktop-path=%USERPROFILE%\Desktop

не, пардон, я понял... из реестра прилетает с %%
RealVaVa
15.06.2017
K0IIIAK писал(а)
что я делаю не так?

не знаю. Как такой вариант? Положите куда-нибудь не на systemdrive
К сообщению прикреплен файл:
178663682-test.zip   (1 Kb)   Скачать файл
K0IIIAK
15.06.2017
действительно

c:\>C:\test.bat

c:\>For /F "Tokens=2* Delims= " %I In ('Reg Query "HKEY_CURRENT_USER\Software
\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Desktop"') Do
Set desktop-path=%J

c:\>Set desktop-path=Folders

c:\>Set desktop-path=%USERPROFILE%\Desktop

c:\>echo %USERPROFILE%\Desktop
%USERPROFILE%\Desktop

c:\>copy file.txt %USERPROFILE%\Desktop
Системе не удается найти указанный путь.
Скопировано файлов: 0.

c:\>pause
Для продолжения нажмите любую клавишу . . .

c:\>copy file.txt %USERPROFILE%\Desktop
Скопировано файлов: 1.

c:\>
Er.DS
15.06.2017
RealVaVa писал(а)
из текущей для батника папки

А точно идёт попытка скопировать именно из текущей для батника папки? Не запускается ли батник от другой учётки с её переменными окружения? А если прописать полный путь к file.txt?
RealVaVa
15.06.2017
Даже если он и запускается из-под другой учётки, у неё должен быть свой каталог рабочего стола. Так? А тут всё же "Системе не удается найти указанный путь. "
K0IIIAK
15.06.2017
у меня вот так заработало , win 7


For /F "Tokens=2* Delims= " %%I In ('Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Desktop"') Do Set desktop-path=%%J
echo %desktop-path%
P = eval %desktop-path%
copy file.txt P
pause
RealVaVa
15.06.2017
K0IIIAK писал(а)
For /F "Tokens=2* Delims= " %%I In ('Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Desktop"') Do Set desktop-path=%%J
echo %desktop-path%
P = eval %desktop-path%
copy file.txt P
pause

Хы. Реальне! Спасиб!
K0IIIAK
15.06.2017
стоп. что-то не так. на рабочем столе файлик не появляется
RealVaVa
15.06.2017
да-да, файл Р создаётся рядом с батником
Er.DS
15.06.2017
В общем, кажется мне, что проблема в содержимом переменной %desktop-path%. Пробел лишний сзади или ещё что-то, возможно какие-то строковые проблемы или кодировка.

Ибо вот так-то работает:
SET mytemp=%USERPROFILE%\Desktop
ECHO %mytemp%
COPY file.txt %mytemp%
RealVaVa
15.06.2017
проблема в том, что параметр задаётся выше, и там пробелов нет)) Хотя... он же берётся из реестра и там тож чот не очень прозрачно.
Er.DS
15.06.2017
Ничего не понял. Я говорю, что переменная содержит некорректную строку, полученную криво из реестра.
RealVaVa
15.06.2017
For /F "Tokens=2* Delims= " %%I In ('Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /V "Desktop"') Do Echo %%J>text.txt

Судя по этому выводу, пробела нет. Параметр получается правильно.
Maksa
15.06.2017
Попробуй так
xcopy file "%USERPROFILE%\Desktop"
RealVaVa
16.06.2017
создаётся рядом папка с именем %USERPROFILE% и внутри файл Desktop
273
15.06.2017
Do Set desktop-path=%%J заменить на Do call Set desktop-path=%%J - раскроет %USERPROFILE% в реальный путь.
RealVaVa
16.06.2017
ВОТ. Вот она рыба моей мечты. ЯЗЬ!

Спасибо. Сработало.
Warwar
16.06.2017
читд
Er.DS
16.06.2017
Почему в моём примере вызывать ничего не требуется и происходит корректное двойное раскрытие переменной?

SET mytemp=%USERPROFILE%\Desktop
ECHO %mytemp%
COPY file.txt %mytemp%
K0IIIAK
16.06.2017
у тебя раскрытие не двойное, %USERPROFILE% раскрывается на этапе записи в переменную


c:\>SET mytemp=C:\Users\K0IIIAK\Desktop

c:\>ECHO C:\Users\K0IIIAK\Desktop
C:\Users\K0IIIAK\Desktop

c:\>cd C:\Users\K0IIIAK\Desktop
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Форум Тема (Автор) Последний ответ Ответов
Мобильный форум VoWiFi   -  Pyk 24.09.2024 в 09:54:15 21
Дорого куплю новые картриджи от лазерных и струйных

РЕАЛЬНО Дорого куплю новые картриджи от лазерных и струйных принтеров и копиров (НР, Canon, Samsung, Xerox, OCE и др.) всех моделей....
Цена: 7 777 руб.

Продаю факс (ы) Panasonic– FT932/982

Продаю факс (ы) Panasonic– FT932/982: термоперенос, термобумага, А4
Цена: 350 руб.

Материнские платы на запчасти и не только

Материнские платы на запчасти и не только Материнские платы и другие комплектующие Отправка в регионы после оплаты. Транспортной...
Цена: 3 000 руб.

Принтер лазерный Avision AP30A

Avision AP30A лазерный принтер черно-белая печать формат A4, 33 стр/мин, 128 Мб, дуплекс, лоток 250 листов и многоцелевой лоток с...
Цена: 9 900 руб.