Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Смена расширения

Ответить
Настройки темы
CMD/BAT - [решено] Смена расширения

Пользователь


Сообщения: 118
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Мне нужно скриптом изменять расширения всех файлов на .java
Не какого-то одного, а всю папку (*.*)

Отправлено: 22:50, 29-07-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Burning Hell, попробуйте так:
Код: Выделить весь код
for /r "Путь" %%i in ("*.cmd") do ren "%%i" "%%~ni.txt"
Но вообще для таких вещей стоит освоить какой-нибудь сторонний файловый менеджер, наподобие Far Manager, Total Commander и т.п.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:00, 13-11-2017 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Burning Hell, ИМХО, лучше переименовывать не
файл.cmd -> файл.txt
а лучше
файл.cmd -> файл.cmd.txt
Это позволит застраховаться от непреднамеренного запуска командного файла, но при этом позволит легко отличить обычные txt файлы от переименованных cmd и, при необходимости, их найти.
Изменил решение Iska, не тестировал
Код: Выделить весь код
for /r "Путь" %%i in ("*.cmd") do ren "%%i" "%%~nxi.txt"
Или, если эту строку использовать не в командном файле, а выполнить в командном окне:
Код: Выделить весь код
for /r "Путь" %i in ("*.cmd") do ren "%i" "%~nxi.txt"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 13-11-2017 в 12:52.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:40, 13-11-2017 | #12


Пользователь


Сообщения: 79
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
Но вообще для таких вещей стоит освоить какой-нибудь сторонний файловый менеджер, наподобие Far Manager, Total Commander и т.п. »
Спасибо за совет, я про это не подумал. Надо попробовать.

megaloman, подскажите, пожалуйста, по вашему коду. Что такое %%~nxi?

Отправлено: 13:02, 13-11-2017 | #13


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Burning Hell:
Что такое %%~nxi? »
Цитата for /?:
Код: Выделить весь код
…
Операции подстановки ссылок на переменные команды FOR
также расширены. Допускается применение следующих
синтаксических конструкций:

    %~I         - из переменной %I удаляются обрамляющие кавычки (")
    %~fI        - переменная %I расширяется до полного имени файла
    %~dI        - из переменной %I выделяется только имя диска
    %~pI        - из переменной %I выделяется только путь к файлу
    %~nI        - из переменной %I выделяется только имя файла
    %~xI        - из переменной %I выделяется расширение имени файла
    %~sI        - полученный путь содержит только короткие имена
    %~aI        - переменная %I расширяется до атрибутов файла
    %~tI        - переменная %I расширяется до даты /времени файла
    %~zI        - переменная %I расширяется до размера файла
    %~$ПУТЬ:I   - проводится поиск по каталогам, заданным в
                         переменной среды ПУТЬ, и переменная %I
                         заменяется на полное имя первого найденного
                         файла.  Если переменная ПУТЬ не определена или
                          в результате поиска не найден ни один файл,
                          то этот модификатор заменяется на пустую
                          строку.

При объединении нескольких операторов можно получить
следующие результаты:

    ~dpI       - переменная I раскрывается в имя диска и путь
    ~nxI       - переменная I раскрывается в имя файла и его
                       расширение
    ~fsI        - переменная I раскрывается в полный путь с
                       короткими именами
    ~dp$ПУТЬ:I - проводится поиск по каталогам, заданным в
                       переменной среды ПУТЬ, и переменная I
                       раскрывается в имя диска и путь к первому
                       найденному файлу.
    ~ftzaI     - переменная I раскрывается в строку, подобную
                       выдаваемой командой DIR
…
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:41, 13-11-2017 | #14


Пользователь


Сообщения: 79
Благодарности: 2

Профиль | Отправить PM | Цитировать


Iska, О_____________________о. Как же все в cmd не похоже на другие языки программирования.

megaloman, спасибо огромное. Отлично работает.

Отправлено: 13:50, 13-11-2017 | #15


Пользователь


Сообщения: 79
Благодарности: 2

Профиль | Отправить PM | Цитировать


Подскажите, как сделать обратное преобразование имен, т.е. вырезать".txt" из всех имен?

Как я понимаю должно быть что-то типа такого:

Цитата gora:
(For /F "usebackq tokens=1* delims==" %%i In ("*.cmd.txt") Do (If "%%i"==".txt" (Echo %%j) Else (If "%%j"=="" (Echo %%i) Else Echo %%i=%%j))) »
, но не уверен...

Отправлено: 14:22, 13-11-2017 | #16


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Непосредственно для командной строки:
Код: Выделить весь код
for /r "Путь" %i in ("*.cmd.txt") do @ren "%i" "%~ni"
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:21, 13-11-2017 | #17


Пользователь


Сообщения: 79
Благодарности: 2

Профиль | Отправить PM | Цитировать


Iska, а зачем собака перед ren?

И еще такой вопрос. Можно ли как-то научить этот код обрабатывать директорию, которая лежит в шаре? Т.е., путь относительный.

Последний раз редактировалось Burning Hell, 13-11-2017 в 15:51.


Отправлено: 15:38, 13-11-2017 | #18


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Burning Hell:
Iska, а зачем собака перед ren? »
Чтобы не отображались сами исполняемые в цикле разбора команды «ren».

Помните, в пакетных файлах пишут:
Код: Выделить весь код
@echo off
…
«echo off» подавляет отображение команд пакетного файла, исполняемых интерпретатором команд. А чтобы при исполнении не отображалась сама команда «echo off» — её предваряют символом «@». Вот тут то же самое.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:51, 13-11-2017 | #19


Пользователь


Сообщения: 79
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
«echo off» подавляет отображение команд пакетного файла, исполняемых интерпретатором команд. А чтобы при исполнении не отображалась сама команда «echo off» — её предваряют символом «@». Вот тут то же самое. »
Так вот зачем пишут эту штуку, с echo) Я никогда не знал этого, если честно, т.к. очень мало пишу на cmd. Спасибо!

Отправлено: 15:55, 13-11-2017 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Смена расширения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Изменение расширения funalien Программное обеспечение Windows 2 23-10-2011 07:47
Разное - [решено] Пункт смена расширения в контекстном меню файла Chekis9100a Microsoft Windows 2000/XP 7 06-12-2010 02:03
Интерфейс - Произвольная смена расширения рабочего стола, после выхода с игр artem1982 Microsoft Windows 7 10 25-03-2010 20:23
Расширения Gerrard Хочу все знать 3 25-01-2007 18:56
что за расширения *.CHK Millenium Хочу все знать 2 09-07-2005 02:07




 
Переход