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

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

Ответить
Настройки темы
CMD/BAT - [решено] Удалить у всех файлов в папке первые 4 символа в имени

Аватара для habib2302

Ветеран


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


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

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


Доброе время суток. Я не силен в CMD/BAT, поэтому прошу помощи. Нужно удалить у всех файлов в папке первые 2 символа в имени не затрагивая расширение файла. У меня имеется готовый батник, но только на удаление последних 2 символов.
Код: Выделить весь код
@echo off 
setlocal enabledelayedexpansion 
for %%i in ( *.* ) do ( 
set "name=%%~ni" 
set "name=!name:~0,-2!" 
rename "%%~i" !name!%%~xi 
echo !name!%%~xi 
) 
pause

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 21:57, 06-04-2019

 
mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


habib2302, тут где-то рядышком сегодня один уже удаляли...

-------
Mikhail Zhilin

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

Отправлено: 22:05, 06-04-2019 | #2



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

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


Аватара для habib2302

Ветеран


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

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


mwz, скорей всего это http://forum.oszone.net/thread-335923.html

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 22:08, 06-04-2019 | #3

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


habib2302, ну и замените количество хоть на два (как у вас в тексте), хоть на четыре (как у вас в заголовке темы).

-------
Mikhail Zhilin


Отправлено: 22:13, 06-04-2019 | #4


Аватара для habib2302

Ветеран


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

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


mwz, пробовал. не работает. Ошибка в синтаксисе команды.
Код: Выделить весь код
@echo off 
setlocal enabledelayedexpansion 
for %%i in ( *.* ) do ( 
set "name=%%~ni" 
set "name=!name:~4!" 
rename "%%~i" !name!%%~xi 
echo !name!%%~xi 
) 
pause

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 22:25, 06-04-2019 | #5


Ветеран


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

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


habib2302,
когда копипастите откуда-то следите за пробелами в конце строк - очень распространенная ошибка причина и имя файла и путь когда в переменной надо обязательно брать в парные кавычки
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

for %%i in (*.*) do (
 set "name=%%~ni"
 set "name=!name:~4!"
 ren "%%~i" "!name!%%~xi"
)
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:00, 06-04-2019 | #6


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for %%i in (*.*) do (
	set "name=%%~ni"
	rename "%%~i" "!name:~4!%%~xi"
) 

endlocal
exit /b 0
habib2302, в любом случае — делать rename файлов внутри цикла перебора тех же самых файлов по for — не есть правильно. Делайте разбор по for /f для команды dir /b — и вот тогда смело переименовывайте: сначала выполнится dir /b, и только потом произойдёт первое переименование.

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

Отправлено: 23:03, 06-04-2019 | #7

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата habib2302:
Ошибка в синтаксисе команды »
На время отладки строку @echo off надо убирать. И смотреть, где ошибка (ошибки).
Да, и у вас заодно от имени батника отрежутся символы.

Кстати... А что вы будете делать, если получите одинаковые имена переименованных файлов?

-------
Mikhail Zhilin


Последний раз редактировалось mwz, 06-04-2019 в 23:11.

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

Отправлено: 23:04, 06-04-2019 | #8


Ветеран


Contributor


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

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


habib2302,
Цитата Жванецкий (?):
Одно неверное движение, и ты отец ...
ИМХО, указывать имена файлов *.* опрометчиво. При повторном возможно случайном запуске батника тупо повторно отрежутся символы. Подозреваю, можно указать маску, чтобы повторно файлы не обрабатывались.
Цитата mwz:
Да, и у вас заодно от имени батника отрежутся символы. »
ИМХО, скверная политика запускать батник из той же папки, где обрабатываемые файлы. Поэтому, для обрабатываемых файлов лучше указывать полный путь с маской, и, (но это не нужно, если не располагать батник вместе с файлами) можно приделать батнику атрибут "скрытый".
До кучи (число отрезаемых символов тоже задаётся, а то завтра кто-то захочет отрезать 2 или 5 символов)
Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Box_In\я*.txt"
	Set /A N=4

	Attrib +H "%~dpnx0"
	FOR %%i IN ("%FileIn%") DO (Set "NN=%%~ni" &Call Ren "%%i" "%%NN:~%N%%%%%~xi")
Exit /B 0
Или, как вариант, перед обрезанием контролировать длину, чтобы не отрезать повторно: возможно, обрабатываемые файлы имеют некое стандартное по длине имя. Или всё-таки на каждое переименование организовать запрос. Но это слегка другая песТня, излагайте!

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


Последний раз редактировалось megaloman, 08-04-2019 в 16:06.

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

Отправлено: 15:37, 08-04-2019 | #9


Ветеран


Contributor


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

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


Цитата Iska:
в любом случае — делать rename файлов внутри цикла перебора тех же самых файлов по for — не есть правильно »
Вы, наверное, правы
Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Box_In\я*.txt"
	Set /A N=4
	
	>"%~dpn0.tmp%~x0" (FOR %%i IN ("%FileIn%") DO (
		Set "NN=%%~ni"
		Call Echo Ren "%%i" "%%NN:~%N%%%%%~xi"
	))
	Attrib +H "%~dpnx0"
	Attrib +H "%~dpn0.tmp%~x0"
	Call "%~dpn0.tmp%~x0"
	Attrib -H "%~dpnx0"
	Attrib -H "%~dpn0.tmp%~x0"
	Del "%~dpn0.tmp%~x0"
Exit /B 0

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


Последний раз редактировалось megaloman, 08-04-2019 в 16:40.

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

Отправлено: 16:32, 08-04-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - удалить первые 7 символов в имени файла ВиталийВ Скриптовые языки администрирования Windows 14 02-08-2024 01:29
CMD/BAT - [решено] Объединение всех файлов в папке AlexVong Скриптовые языки администрирования Windows 5 24-06-2015 23:34
CMD/BAT - Переименование файлов в папке по имени папки_счётчик Sergo_zloy Скриптовые языки администрирования Windows 13 17-01-2014 16:58
текстовый файл с именами всех файлов в папке socap AutoIt 19 19-02-2012 16:42
[решено] Импорт всех reg-файлов в папке? s127d Автоматическая установка Windows 2000/XP/2003 2 24-05-2008 05:11




 
Переход