Показать полную графическую версию : [решено] Смена расширения
Так вот зачем пишут эту штуку, с echo) »
Угу. Если опустить «@» перед «echo off», то, при прочих умолчаниях, при исполнении этого пакетного файла первой строкой вывода будет именно «echo off» — сама эта команда, а подавление начнётся со следующей.
Burning Hell
13-11-2017, 16:23
Iska,
И еще такой вопрос. Можно ли как-то научить этот код обрабатывать директорию, которая лежит в шаре? При этом сам скрипт лежит на локальном диске. »
Пробовал делать вот так:
net use z: \\docs\i\Подразделения\НД\ДК\ОСС\Проекты
for /r "z:\EY\InfoM\scripts" %i in ("*.cmd.txt") do @ren "%i" "%~ni"
Не работает. При том, что сам сетевой диск подключился и открывается.
Burning Hell, при использовании внутри пакетных файлов «%» при переменных цикла и параметрах надо удваивать, наподобие:
@echo off
net.exe use z: "\\docs\i\Подразделения\НД\ДК\ОСС\Проекты"
for /r "z:\EY\InfoM\scripts" %%i in ("*.cmd.txt") do ren "%%i" "%%~ni"
Burning Hell
13-11-2017, 16:58
Iska, спасибо огромное, дело действительно в знаках "%". Но при запуске скрипта выдает ошибки: "Сохраняемый или полученный файл заблокирован." Пробовал выдать права не только на чтение непосредственно для директории scripts - не помогло.
Но при запуске скрипта выдает ошибки: "Сохраняемый или полученный файл заблокирован." »
Добавьте «rem» перед «@echo off». Выполните пакетный файл в командной строке. Скопируйте с окна консоли полученный вывод, вставьте сюда под тэгами «code» и «spoiler».
Burning Hell
13-11-2017, 17:17
C:\Work\scripts>rem net use z: \\docs\i\╨Я╨╛╨┤╤А╨░╨╖╨┤╨╡╨╗╨╡╨╜╨╕╤П\╨в╨Ф\╨Ф╨Ъ╨Р\╨
Ю╨б╨г╨а\╨Я╤А╨╛╨╡╨║╤В╤Л
C:\Work\scripts>for /R "z:\\EY\InfoM\scripts" %i in ("*.cmd.txt") do @ren "
%i" "%~ni"
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
C:\Work\scripts>pause
Для продолжения нажмите любую клавишу . . .
Burning Hell, наоборот: сначала обрамить текст тэгом «code», а затем — тэгом «spoiler».
Сохраните пакетный файл в кодировке OEM/866 (сейчас он у Вас, видимо, в UTF-8/65001). «rem» перед «net use» ставить не надо. Отключите в Проводнике диск z: и снова попробуйте выполнить пакетный файл.
Burning Hell
13-11-2017, 17:48
Iska, вот такую ошибку выдает:
C:\Work\scripts>net use z: \\docs\i\╨Я╨╛╨┤╤А╨░╨╖╨┤╨╡╨╗╨╡╨╜╨╕╤П\╨в╨Ф\╨Ф╨Ъ╨Р\╨Ю╨б╨
г╨а\╨Я╤А╨╛╨╡╨║╤В╤Л
Системная ошибка 53.
Не найден сетевой путь.
C:\Work\scripts>for /R "z:\EY\InfoM\scripts" %i in ("*.cmd.txt") do @ren "%
i" "%~ni"
C:\Work\scripts>pause
Для продолжения нажмите любую клавишу . . .
От кодировки не зависит - и в OEM/866 и в UTF-8 не работает.
Тут какая-то проблема с сохранением - он не сохраняет после смены кодировки, как будто бы ничего не поменялось в файле. Файл открываешь, а он все равно в UTF-8
Тут какая-то проблема с сохранением - он не сохраняет после смены кодировки, как будто бы ничего не поменялось в файле. Файл открываешь, а он все равно в UTF-8 »
В чём и как именно делаете?
Burning Hell
14-11-2017, 09:13
Iska,
1. Открываю свой батник в Notepad++.
2. В пункте Encoding выбираю Cyrillic и далее OEM 866. Кодировка меняется, но документ не подсвечивается, что были изменения.
3. После закрытия переоткрытия файла кодировка старая...
***
Сделал так. Сконвертировал файл в ANSI и далее выбрал OEM 866. Теперь скрипт выглядит так:
net.exe use z: \\docs\i\╧юфЁрчфхыхэш*\╥─\─╩└\╬╤╙╨\╧ЁюхъЄ√
for /r "z:\EY\InfoM\scripts" %%i in ("*.cmd.txt") do @ren "%%i" "%%~ni"
pause
Однако сейчас наблюдаются какие-то проблемы с доступом к самой шаре. Скрипт выдает такую же ошибку как в моем предыдущем сообщении.
Добавьте в Вашу последовательность действий пункты:
…
1а) Выделить всё («Ctrl-A»);
1б) Вырезать («Ctrl-X»);
1в) Сохранить («Ctrl-S»);
…
2а) Вставить («Ctrl-V»);
2б) Сохранить («Ctrl-S»);
…
ибо от простого переключения кодировки само содержимое не меняется.
Burning Hell
14-11-2017, 10:11
Iska,
шара заработала. Сейчас вот что выдает:
C:\Work\scripts>net.exe use z: \\docs\i\Подразделения\НД\ДК\ОСС\Проекты
Команда выполнена успешно.
C:\Work\scripts>for /R "z:\EY\InfoM\scripts" %i in ("*.cmd.txt") do @ren "%
i" "%~ni"
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
Сохраняемый или полученный файл заблокирован.
C:\Work\scripts>pause
Для продолжения нажмите любую клавишу . . .
Скрипт в кодировке OEM 866, все читабельно.
Может быть, прав на директорию не хватает...?
У папки InfoM постоянно появляется флажок "Только чтение", даже если его убрать и нажать"Применить". При переоткрытии свойств он снова появляется.
У папки InfoM постоянно появляется флажок "Только чтение", даже если его убрать и нажать"Применить". При переоткрытии свойств он снова появляется. »
В Проводнике флажок «Только для чтения» на первой вкладке свойств объекта файловой системы для папки реализован отвратительно, можете даже не смотреть на него. Вот потому (и не только, разумеется) я и пользую Far Manager.
Сейчас вот что выдает: »
1. Не переименовываются все подходящие файлы или только часть?
2. Если попробовать тот же код, но только на локальных файлах, а не на сетевом размещении — что будет?
Burning Hell
14-11-2017, 11:30
В Проводнике флажок «Только для чтения» на первой вкладке свойств объекта файловой системы для папки реализован отвратительно, можете даже не смотреть на него. Вот потому (и не только, разумеется) я и пользую Far Manager. »
У меня есть total commander...Может быть, как-то через него можно. Если это поможет, конечно.
1. Не переименовываются все подходящие файлы или только часть? »
Вообще ничего не переименовывается. Пишет вот эту ошибку с заблокированными файлами.
2. Если попробовать тот же код, но только на локальных файлах, а не на сетевом размещении — что будет? »
Я попробовал на директории, которая на флешке. Все замечательно работает. Все подходящие файлы переименовались и вновь стали батниками.
Я попробовал на директории, которая на флешке. Все замечательно работает. Все подходящие файлы переименовались и вновь стали батниками. »
Burning Hell, мне, к сожалению, не на чем даже посмотреть. Судя по беглому поиску, проблема с подобным сообщением об ошибке наблюдается с файлами, размещёнными на сетевом ресурсе, с символами в именах файлов. Возможно, что именно наш вариант с двумя точками — «Имя.cmd.txt».
Давайте попробуем проверить. Подключите сетевой ресурс диском. Создайте где-нибудь там файл «Имя.cmd.txt». Откройте командную строку и попробуйте посредством «ren "Диск:\Путь\Имя.cmd.txt" "Имя.cmd"» переименовать ранее созданный файл. Что получится?
Burning Hell
14-11-2017, 12:04
Давайте попробуем проверить. Подключите сетевой ресурс диском. Создайте где-нибудь там файл «Имя.cmd.txt». Откройте командную строку и попробуйте посредством «ren "Диск:\Путь\Имя.cmd.txt" "Имя.cmd"» переименовать ранее созданный файл. Что получится? »
Смотрите. Взял этот же сетевой ресурс (шара со скриптами), подключенный как диск. Делаю rename как вы сказали. Файл test_new.cmd.txt существует, с ним все ок.
Microsoft Windows [Version 6.3.9600]
(c) Корпорация Майкрософт (Microsoft Corporation), 2013. Все права защищены.
C:\Users\test>ren z:\EY\InfoM\scripts\test_new.cmd.txt test_new.cmd
Сохраняемый или полученный файл заблокирован.
C:\Users\test>
Причем не работает, даже если файл просто будет называться test_new.txt - проверил, та же ошибка.
Причем не работает, даже если файл просто будет называться test_new.txt - проверил, та же ошибка. »
«test_new.txt» — старое имя или новое? То есть, то из которого переименовываете или то, в которое переименовываете?
megaloman
14-11-2017, 12:38
Возможно, что именно наш вариант с двумя точками — «Имя.cmd.txt». »Не надо ляля :)
Вот батник. Запускаю его как file.bat >zzzzzzz.txt Сетевой ресурс организовал на своём компьютере.@Echo On
net.exe use U: "\\CompName\Музыка"
Dir "U:\Бредовая хрень\" /s /b /a:-d
for /r "U:\Бредовая хрень" %%i in ("*.cmd") do ren "%%i" "%%~nxi.txt"
Dir "U:\Бредовая хрень\" /s /b /a:-d
net.exe use U: /Delete
net.exe use U: "\\CompName\Музыка"
Dir "U:\Бредовая хрень\" /s /b /a:-d
for /r "U:\Бредовая хрень" %%i in ("*.cmd.txt") do ren "%%i" "%%~ni"
Dir "U:\Бредовая хрень\" /s /b /a:-d
net.exe use U: /Delete
Результат прилагаю. ИМХО, загвоздка в разрешениях. Или, крамольная мысль, антивирус блокирует подозрительную деятельность
Burning Hell
14-11-2017, 12:57
«test_new.txt» — старое имя или новое? То есть, то из которого переименовываете или то, в которое переименовываете? »
test_new.txt - это старое имя. Файл лежит на той же самой шаре, которая подключена как сетевой диск. Из этого файла я пытался сделать батник test_new.cmd.
ИМХО, загвоздка в разрешениях. »
Т.е. в правах на директорию?
***
Я могу, конечно, попробовать попинать нашу тех. поддержку, но не уверен, что они смогут мне помочь.
Burning Hell, особо идей нет.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.