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

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

Ответить
Настройки темы
CMD/BAT - Автоматическое удаление части имени файла

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


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

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


Задача : Есть Папка D:\Test . В папке находятся подкаталоги : test1, temp1 итд... Кол-во подкаталогов не ограничено. Имена рандомные.
Помогите допилить скрипт.
Задача скрипта : Проход по всем подкаталогам и удаление части имени файлов, которые в них находятся, до разделителя "_" включительно. Пример : был файл PS-E9SSS1A 2_M71640, стал M71640
Сам скрипт (рабочий, но не проходит подкаталоги):

@echo off
setlocal enableextensions enabledelayedexpansion
2>nul pushd D:\Test && (
for /f "usebackq delims=" %%i in (
`2^>nul dir /b /a:-d`
) do (
set sVar=%%~i
ren "%%~i" "!sVar:*_=!"
)
popd
) || (
echo Can't find source folder [D:\Test]
exit /b 1
)

endlocal
exit /b 0

Отправлено: 16:11, 29-01-2020

 

Ветеран


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

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


вопрос 1
что делать с файлами вида: PS_E9SSS1A 2_M71640
-------------
вопрос 2
что делать с файлами:
PS-E9SSS1A 2_M71640
PP-E9SSS1A 2_M71640
PS-E9SSS1A 3_M71640
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:08, 29-01-2020 | #2



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

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


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


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

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


1.Файлы вида PS_E9SSS1A 2_M71640 переименовываются в файлы вида M71640
2.Файлы вида
PS-E9SSS1A 2_M71640
PP-E9SSS1A 2_M71640
PS-E9SSS1A 3_M71640
Не предусмотрены, все имена уникальны.
Выше указаны скрипт, корректно работает в в папке D:\Test, но нет прохода по подкаталогам.

вопрос 1
что делать с файлами вида: PS_E9SSS1A 2_M71640
Не верно прочитал. В файлах тоже используется толь-ко 1 разделитель. Файлов с двумя "_" нет

Отправлено: 17:15, 29-01-2020 | #3


Ветеран


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

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


Цитата Trm007:
…Не предусмотрены, все имена уникальны. »
Цитата Trm007:
В файлах тоже используется толь-ко 1 разделитель. Файлов с двумя "_" нет »
Предусмотрено, не предусмотрено — это не важно. Вы напишите, что делать, когда такое встретится.

Отправлено: 18:00, 29-01-2020 | #4


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


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

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


Цитата Iska:
Цитата Trm007:
…Не предусмотрены, все имена уникальны. »
Цитата Trm007:
В файлах тоже используется толь-ко 1 разделитель. Файлов с двумя "_" нет »
Предусмотрено, не предусмотрено — это не важно. Вы напишите, что делать, когда такое встретится.
Такое не встретится.

Поэтому и не указывались данные условия. Ани не нужны.

Отправлено: 18:04, 29-01-2020 | #5


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Soft_In\*_*.*"

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%FileIn%" /B /A:-D /S`) Do (
		Set "Name=%%~nf"
		Call Ren "%%f" "%%Name:*_=%%%%~xf"
	)

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


Последний раз редактировалось megaloman, 29-01-2020 в 18:54.

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

Отправлено: 18:30, 29-01-2020 | #6


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


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

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


не работает

Отправлено: 18:38, 29-01-2020 | #7


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


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

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


Путь прописан корректно, рус символов нет.

Цитата megaloman:
Trm007, Что значит, "не работает" - Вы свой путь файлов с маской прописали? Там, случаем, в батнике нет русских символов? »
Перепроверил несколько раз, заработал. Спасибо большое.

Отправлено: 19:07, 29-01-2020 | #8


Ветеран


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

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


Цитата Trm007:
Такое не встретится. »
Не встретится «\», «?» и «*» в имени файла. А вышеперечисленное — вполне. И, по-хорошему, надо об этом думать заранее и как-то обрабатывать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:14, 29-01-2020 | #9


Ветеран


Contributor


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

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


Iska, Есть конкретная задача. Похоже, файлы делаются неким софтом с жестким форматом имени, и утверждение, что в имени только один знак "_" обосновано.
Можно, конечно, учесть наличие нескольких "_" в имени.
При условии, что надо взять последнюю часть файла, вот вариант
Код: Выделить весь код
@Echo OFF
	Set "FileIn=Z:\Тра та та\*_*.*"

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%FileIn%" /B /A:-D /S`) Do (
		Call :NewName "%%~nf"
		Call Ren "%%f" "%%Name:*_=%%%%~xf" ||Call Echo Ren "%%f" "%%Name:*_=%%%%~xf"
	)
Exit /B

:NewName
	Set "Name=%~1"
	:Begin
		Set "Name1=%Name%"
		Set "Name=%Name1:*_=%"
		If Not "%Name%"=="%Name1%" GoTo :Begin
Exit /B
Но всё равно, ИМХО, в CMD не все знаки в имени можно просто обработать.

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


Отправлено: 23:43, 29-01-2020 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Удаление файла по дате в Имени kasab Скриптовые языки администрирования Windows 16 17-08-2019 10:17
VBS/WSH/JS - [решено] Удаление файла с двумя пробелами в имени ospekt00 Скриптовые языки администрирования Windows 7 05-03-2017 18:21
CMD/BAT - перемещение файлов в каталог созданный из части имени файла surrender1 Скриптовые языки администрирования Windows 9 10-10-2013 14:42
Разное - Автоматическое удаление свойств и личной информации из файла - возможно ли? Siller Microsoft Windows 7 6 17-01-2013 17:52
CMD/BAT - [решено] автоматическое удаление файла и ключа реестра при загрузке ПК last-77 Скриптовые языки администрирования Windows 2 08-12-2010 10:19




 
Переход