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

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

Ответить
Настройки темы
Любой язык - [решено] Групповая замена символа в именах файлов

Новый участник


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

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


Добрый вечер. Объясните как переименовать несколько файлов, а именно заменить в них "@" на "-", сразу. Я знаю что подобные темы здесь давно были и закрыты, но моя ситуация отягощается тем, что я "чайник" и не представляю что делать со скриптами. Хорошие новости в том, что, в принципе, я сообразительный. Заранее спасибо за помощь.

Отправлено: 21:13, 25-07-2018

 

Ветеран


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

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


На PowerShell:
Код: Выделить весь код
Get-ChildItem -Path 'C:\Temp' -Include '*@*.*' -Recurse | ForEach-Object -Process {
    if(-not $_.PSIsContainer) {
        Rename-Item -Path $_.FullName -NewName "$($_.BaseName -replace '@', '-')$($_.Extension)" -Force
    }
}

Отправлено: 21:29, 25-07-2018 | #2



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

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


Новый участник


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

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



Цитата Iska:
Get-ChildItem -Path 'C:\Temp' -Include '*@*.*' -Recurse | ForEach-Object -Process {
if(-not $_.PSIsContainer) {
Rename-Item -Path $_.FullName -NewName "$($_.BaseName -replace '@', '-')$($_.Extension)" -Force
}
} »
Снимок экрана (1).png

Отправлено: 21:55, 25-07-2018 | #3


Новый участник


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

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


PS. Пардон, менять надо не "@" а "@ " (после собаки еще и пробел).

Отправлено: 22:04, 25-07-2018 | #4


Ветеран


Contributor


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

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


cmd
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

Set "BoxIn=Z:\Box_In"
Set "S1=@ "
Set "S2=-"

For %%i IN ("%BoxIn%\*%S1%*.*") DO Set "nf=%%~nxi" &ren "%%i" "!nf:%S1%=%S2%!"

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


Отправлено: 22:30, 25-07-2018 | #5


Новый участник


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

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



Цитата megaloman:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set "BoxIn=Z:\Box_In"
Set "S1=@ "
Set "S2=-"
For %%i IN ("%BoxIn%\*%S1%*.*") DO Set "nf=%%~nxi" &ren "%%i" "!nf:%S1%=%S2%!" »
Снимок экрана (2).png

Отправлено: 22:41, 25-07-2018 | #6


Ветеран


Contributor


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

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


Изображения
Тип файла: png ZZZZZZ.png
(33.1 Kb, 5 просмотров)

fullstopru,
ничего не понимаю.
1. Во первых, код надо сохранить в файл с расширением .bat
2. Во вторых надо указать в коде Ваш реальный путь к файлам вместо моего Set "BoxIn=Z:\Box_In"
3. На выполнение запускать bat-файл

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


Отправлено: 23:09, 25-07-2018 | #7


Новый участник


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

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



Цитата megaloman:
3. На выполнение запускать bat-файл »
Снимок экрана (3).png

Отправлено: 23:33, 25-07-2018 | #8


Ветеран


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

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


Цитата fullstopru:
Снимок экрана (1).png »
Вы нажимаете Ctrl-V в два раза больше, нежели следует .

Цитата fullstopru:
PS. Пардон, менять надо не "@" а "@ " (после собаки еще и пробел). »
Так добавьте этот пробел в оба используемых места:
Код: Выделить весь код
Get-ChildItem -Path 'C:\Мои проекты\0177' -Include '*@ *.*' -File -Recurse | ForEach-Object -Process {
    Write-Host $_.FullName
    Rename-Item -Path $_.FullName -NewName "$($_.BaseName -replace '@ ', '-')$($_.Extension)" -Force
}
(теперь мне опять доступен PowerShell V5, и пусть будет -File вместо if(-not $_.PSIsContainer) .
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:12, 26-07-2018 | #9

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата fullstopru:
Снимок экрана (3).png »
А что за запись "CD d/ z:\", и тем более "CD с/ z:\"??

Вы уж повнимательней делайте то, что вам пишут и что вы видите...

Ну а выход из PowerShell осуществляется не по Ctrl+С (^C, что у вас на снимке (1)), а командой exit.

-------
Mikhail Zhilin


Отправлено: 00:42, 26-07-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Замена маленькой буквы на заглавную в именах файлов Nun-Nun Скриптовые языки администрирования Windows 16 24-01-2023 18:37
Debian/Ubuntu - Русский язык в консоли и именах файлов FiberLink Общий по Linux 5 30-11-2015 05:22
CMD/BAT - [решено] Замена после символа, вставка перед символом AlexVong Скриптовые языки администрирования Windows 4 05-08-2012 13:31
[решено] Замена символа в строке, по номеру [PERL] WestBronx Вебмастеру 1 22-03-2008 14:31
замена символа в тексте (PHP)   Casufi Вебмастеру 3 11-04-2003 11:07




 
Переход