1 (изменено: Kirill_rus, 2012-04-27 03:57:05)

Тема: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Здравствуйте.
Есть необходимость переименовать дважды вложенную в папку "Мои документы" подпапку.
Почитал форум получился следующий код:

@IF EXIST  "%USERPROFILE%/Њ®Ё „®Єг¬Ґ­вл/" (
   @ECHO Folder Њ®Ё „®Єг¬Ґ­вл exist.
   @chcp 1251 >nul
   @move "%USERPROFILE%\Мои документы\Program_folder\data" "%USERPROFILE%\Мои документы\Program_folder\Data_backup"
   @chcp 866 > nul
   @ECHO Folder renamed 
   @pause
   ) ELSE (
    @ECHO Folder does not renamed.
    @pause
    )

Пояснение: "Њ®Ё „®Єг¬Ґ­вл" - "Мои документы" в кодировке DOS-866.
Как результат - программа обнаруживает папку "Мои документы", но не переименовывает вложенную подпапку.
С англоязычным путём такой проблемы не возникает.

Что нужно сделать, чтобы переименовать дважды вложенную папку по этому пути?
Спасибо.

2

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Пояснение: "Њ®Ё „®Єг¬Ґ­вл" - "Мои документы" в кодировке DOS-866.

Ну, так и пишите правильно. Здесь никаких chcp 1251 и кракозябр не нужно. Просто используйте редактор, который умеет работать с OEM/866 кодировкой.

@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder=%UserProfile%\Мои документы\Program_folder\data

if exist "%sFolder%" (
    ren "%sFolder%" "Data_backup"
) else (
    echo Can't find folder [%sFolder%]
)

endlocal
exit /b 0

3 (изменено: Kirill_rus, 2012-04-27 22:15:53)

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

В том-то и дело.
Использовал Notepad2 и Notepad++

Папку в кодировке 866 и 1251 видит.

Тестировал копированием файла.

В папку копировать файл не может.

Вначале думал, что не может найти путь копирования потому, что в пути символы 866. Потому переключал кодировку.

В приведённом коде:

@echo off
setlocal enableextensions enabledelayedexpansion

IF EXIST "%UserProfile%\Мои документы" (
   ECHO Folder "Мои документы" exist
    ) ELSE (
     ECHO Folder "Мои документы" not found.
     )

set sFolder=%UserProfile%\Мои документы
copy "test.txt" "%sFolder%\test.txt"

@pause

endlocal
exit /b 0

Результат такой: папку "Мои документы" видит.
В папку мои документы ничего копировать не может.

При сокращении пути до:

 set sFolder=%UserProfile%

Копирование файла происходит успешно.

Моя система: Windows 7.

4

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Kirill_rus, было бы неплохо начать изучение системы, с которой работаете. Дело в том, что, начиная с Windows Vista и выше, совсем иное расположение папок, а «Мои документы» — всего лишь строка из ресурсов одного из библиотечных файлов в соответствии с установленным Вами языком ОС, не имеющая отношения к реальному имени папки: What happened to My Documents?.

Используйте «Documents» вместо «Мои документы»: Error message when you try to access the My Documents, My Music, My Pictures, and My Videos folders in Windows Vista: "Access is Denied".

5

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Я недавно перешёл на Windows 7.
Можно привести пример, который можно сразу протестировать?

При простой замене в примере:

@echo off
setlocal enableextensions enabledelayedexpansion

IF EXIST "%UserProfile%\Documents" (
   ECHO Folder "Мои документы" exist
    ) ELSE (
     ECHO Folder "Мои документы" not found.
     )

set sFolder=%UserProfile%\Documents
copy "test.txt" "%sFolder%\test.txt"

@pause

endlocal
exit /b 0

Результат тот же:

Folder "Мои документы" not found.
Системе не удаётся найти указанный путь.
Скопировано файлов: 0

6

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Kirill_rus, я, пожалуй, порекомендую Вам другое: загрузить Far Manager 2.0 build 1807 соответствующей разрядности, обновить его путём копирования «поверх» содержимым архива Far Manager 2.0 build 1807 bis build 29 и присмотреться к файловой структуре Windows 7.

Far Manager покажет Вам реальность: где настоящие каталоги, а где — точки монтирования. Пример я попробовал изобразить:

http://img526.imageshack.us/img526/4376/image00020120429034307.th.png

Диалог атрибутов вызывается по «Ctrl-A» (а для каталогов ещё и по «F4»).

7 (изменено: Kirill_rus, 2012-04-30 00:40:44)

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Посмотрю.

Так как в итоге копировать файл в Мои документы?
Переименовать папку, вложенную в Мои документы?

8

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Начните с просмотра. Тогда Вам станет понятно. У меня нет Windows 7, потому я даю Вам общие рекомендации, чтобы Вы могли посмотреть и разобраться сами.

9 (изменено: Kirill_rus, 2012-05-01 03:24:30)

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

С удовольствием разберусь подробнее.
К сожалению, задача очень узка на текущий момент, а времени на досуг минимум.
И мне бы просто точный путь к папке.
А точнее - способ переименовать папку, дважды вложенную в папку Мои документы текущего пользователя.

Конкретнее: как назначить переменной sFolder путь, прочитав его из ключа реестра:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"Personal"=***

?

10

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

wisgest пишет:
@echo off

chcp 1251>nul
:: В СЛЕДУЮЩЕЙ СТРОКЕ МЕЖДУ delims= И КАВЫЧКОЙ - ОДИН ЗНАК ТАБУЛЯЦИИ!!!
for /f "skip=4 tokens=3 delims=    " %%i in ('reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"') do set sFolder=%%i
chcp 866>nul

echo %sFolder%
pause

Как использовать символ табуляции в текстовом редакторе?

Код не работает (привожу видео) даже при запуске bat файла с правами администратора:

http://depositfiles.com/files/p7i2ahiq0 .avi (739 КБ).

11

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Kirill_rus пишет:

Как использовать символ табуляции в текстовом редакторе?

Это зависит от того, каким редактором Вы пользуетесь.

12 (изменено: Kirill_rus, 2012-07-17 23:19:57)

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

alexii пишет:
Kirill_rus пишет:

Как использовать символ табуляции в текстовом редакторе?

Это зависит от того, каким редактором Вы пользуетесь.

А какой редактор позволяет вставить символ табуляции должным образом? Так, чтобы получаемый .bat файл работал?

13

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Например, редактор Far Manager'а — при установленном параметре редактора «Не преобразовывать табуляцию»:

╔════════════════════════════ Редактор ═════════════════════════════╗
║ Преобразовывать табуляцию:                                        ║
║ Не преобразовывать табуляцию                                     ↓║
║ [ ] Постоянные блоки              [x] Del удаляет блоки           ║
║ [x] Сохранять позицию файла       [x] Сохранять закладки          ║
║ [x] Автоотступ                    [ ] Курсор за пределами строки  ║
║ 4   Размер табуляции              [x] Показывать полосу прокрутки ║
║ [x] Пробельные символы            [x] Cлово под курсором          ║
╟───────────────────────────────────────────────────────────────────╢
║                         { OK } [ Отмена ]                         ║
╚═══════════════════════════════════════════════════════════════════╝

14

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Почему-то .bat не работает...
Хотя, судя по тому, как читается сценарий без "echo off" символ табуляции читается правильно...

Вот иллюстрации:

Как читается без "echo off"
[img]http://n-science.ru/files/images/raznoe/1265_Как читается без echo off.png[/img]

Что видно в редакторе
[img]http://n-science.ru/files/images/raznoe/1266_Что видно в редакторе FAR.png[/img]

Настройки редактора
[img]http://n-science.ru/files/images/raznoe/1267_Настройки FAR.png[/img]

Сам проверяемый файл сценария
http://depositfiles.com/files/m5ol6t2lx

Есть ли у Вас рабочий файл?

15

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

Kirill_rus, выполните из-под Far Manager'а:

reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"

Что видите в выводе команды?

16

Re: CMD/BAT: Переименование дважды вложенной папки с кириллицей в пути

При таком коде:

@echo off

 reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"

pause

Вижу "Personal   REG_SZ  полный_путь_к папке_документов"

Привожу снимок экрана:
[img]http://n-science.ru/files/images/raznoe/1321_Чтение значение реестра выводит данные полностью о ветви.png[/img]