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

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

Ответить
Настройки темы
CMD/BAT - Операция с именами файлов

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


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

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


Приветствие. Есть небольшой bat'ник с инструкциями, работающими с именами файлов стандарта 11, 12, 13, 14, .... Делалось это для унификации обработки файлов последовательно двумя программа:

Код: Выделить весь код
@echp off
for /L %%a in (11,1,99) do (
[операция первой программы]

[операция второй программы]
)
Но если честно уже поднадоело в начале копировать список имён исходных файлов, переименовывать файлы в указанный выше порядок чисел (11, 12, 13, ...) и после обработки файлов переименовывать итоговый результат в их первоначальные имена.

Можно ли как-нибудь в bat'ник это прописать для автоматизации?

Заранее спасибо.

Отправлено: 22:02, 29-11-2018

 

Ветеран


Contributor


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

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


rider42, не надо в путях указывать последний слэж
Код: Выделить весь код
Set "BoxIn=D:\Download\Video"
Set "BoxOut=D:\Download\!Vid2CHG"
А во время скрипта какие-либо ошибки выскакивают?

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


Отправлено: 22:01, 30-11-2018 | #11



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

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


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


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

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


megaloman,
Ещё раз спасибо. Убрал.

Как я выяснил ошибка с теми файлами, в названии которых есть символ
Код: Выделить весь код
Такие файлы просто не обрабатываются.

Скопировать из командной строки почему-то не выходит, так что извиняюсь за сриншот
https://lh3.googleusercontent.com/-c...0_23-43-43.png

Последний раз редактировалось rider42, 30-11-2018 в 22:45.


Отправлено: 22:28, 30-11-2018 | #12


Ветеран


Contributor


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

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


Цитата rider42:
Как я выяснил ошибка с теми файлами, в названии которых есть символ »
Символ как символ, если Вы, конечно, меня не обманываете. Дайте поиграться с именами Ваших файлов. Проделайте в командной строке команду
Код: Выделить весь код
dir "D:\Download\Video\*.mp4" /B /A:-D >D:\яяяяяяяяяяя.txt
Получившийся файл прикрепите к сообщению.
У меня создалось впечатление, что Вы излагаете неверную версию. Моё предположение:
Файл "Ковёр.mp4" благополучно переименовался в 11.mp4
После обработки файл 11.mkv не создался
Файл 11.mp4 благополучно переименовался в "Ковёр.mp4"
Файл 11.mkv не переименовался в "Ковёр.mkv", так как не найден
Доработал батник, чтобы он делал лог-файл, чтобы можно было понять, что и как обработалось, а что нет
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=D:\Download\Video"
	Set "BoxOut=D:\Download\!Vid2CHG"

	Set "ExtIn=mp4"
	Set "ExtOut=mkv"
	
	Set "LogBat=%~dpnx0.log"
	
	If Not Exist "%BoxOut%" Md "%BoxOut%"

	Set /A NNN=11
	>"%LogBat%" Echo    %Date% %Time%

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*.%ExtIn%" /b /a:-d /O:D`) DO (

		>>"%LogBat%" (Echo: &Echo === begin "%BoxIn%\%%f")
		Del "%BoxOut%\%NNN%.%ExtOut%" >nul 2>&1

		Call :MyMove "%BoxIn%\%%f" "%BoxIn%\%NNN%.%ExtIn%"
rem Обработка программами
		Echo "%BoxIn%\%%f"
		Echo "%BoxIn%\%NNN%.%ExtIn%"
		Echo:
		Copy "%BoxIn%\%NNN%.%ExtIn%" "%BoxOut%\%NNN%.%ExtOut%" >nul
rem ---------------------

		Call :MyMove "%BoxIn%\%NNN%.%ExtIn%" "%BoxIn%\%%f"
		Call :MyMove "%BoxOut%\%NNN%.%ExtOut%" "%BoxOut%\%%~nf.%ExtOut%"
	)
pause
GoTo :Eof

:MyMove
		If Not Exist %1 (
			>>"%LogBat%" Echo --- not found %1
			Exit /B 2			
		)

		>>"%LogBat%" 2>&1 Move /Y %1 %2 
		If Exist %2 (
			>>"%LogBat%" Echo +++ success Move /Y %1 %2
		) Else (
			>>"%LogBat%" Echo --- failure Move /Y %1 %2
			>>"%LogBat%" Echo --- failure Move /Y %1 %2
		)
GoTo :Eof
Не забудьте удалить выделенную красным имитацию Вашей обработки и вставить свои программы
Лог-файл делается рядом с батником, с именем батника. Вы можете прописать его куда угодно с любым именем

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


Последний раз редактировалось megaloman, 01-12-2018 в 13:32.

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

Отправлено: 12:09, 01-12-2018 | #13


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


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

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


Вложения
Тип файла: log test.bat.log
(1.9 Kb, 2 просмотров)
Тип файла: txt яяяяяяяяяяя.txt
(267 байт, 2 просмотров)

megaloman, спасибо что продолжаете заморачиваться. Приложил к сообщению файлы.

Отправлено: 19:46, 01-12-2018 | #14


Ветеран


Contributor


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

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


Вложения
Тип файла: txt я18120120.vbs.txt
(323 байт, 2 просмотров)

rider42, Похоже, в названиях присутствуют символы, не отражающиеся в 866 кодировке. Приложил переименованный vbs-скрипт, выполните его, полученный txt-файл приложите к сообщению.

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

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

Отправлено: 22:02, 01-12-2018 | #15


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


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

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


Вложения
Тип файла: txt zzzzzzzzzzzzzzz-vbs.txt
(295 байт, 1 просмотров)

Цитата megaloman:
rider42, Похоже, в названиях присутствуют символы, не отражающиеся в 866 кодировке. Приложил переименованный vbs-скрипт, выполните его, полученный txt-файл приложите к сообщению. »
Готово

Отправлено: 22:08, 01-12-2018 | #16


Ветеран


Contributor


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

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


rider42,
Попробуйте вариант, у меня отрабатывает на Ваших наименованиях. Отличие - в одной строке CHCP
Код: Выделить весь код
@Echo Off
cls
chcp 1251 >nul
	Set "BoxIn=D:\Download\Video"
	Set "BoxOut=D:\Download\!Vid2CHG"

	Set "ExtIn=mp4"
	Set "ExtOut=mkv"
	
	Set "LogBat=%~dpnx0.log"
	
	If Not Exist "%BoxOut%" Md "%BoxOut%"

	Set /A NNN=11
	>"%LogBat%" Echo    %Date% %Time%

	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*.%ExtIn%" /b /a:-d /O:D`) DO (

		>>"%LogBat%" (Echo: &Echo === begin "%BoxIn%\%%f")

		Call :MyMove "%BoxIn%\%%f" "%BoxIn%\%NNN%.%ExtIn%"
		Del "%BoxOut%\%NNN%.%ExtOut%" >nul 2>&1

rem Обработка программами
		Echo "%BoxIn%\%%f"
		Echo "%BoxIn%\%NNN%.%ExtIn%"
		Echo:
		Copy "%BoxIn%\%NNN%.%ExtIn%" "%BoxOut%\%NNN%.%ExtOut%" >nul
rem ---------------------

		Call :MyMove "%BoxIn%\%NNN%.%ExtIn%" "%BoxIn%\%%f"
		Call :MyMove "%BoxOut%\%NNN%.%ExtOut%" "%BoxOut%\%%~nf.%ExtOut%"
	)
pause
GoTo :Eof

:MyMove
		If Not Exist %1 (
			>>"%LogBat%" Echo --- not found %1
			Exit /B 2			
		)

		>>"%LogBat%" 2>&1 Move /Y %1 %2 
		If Exist %2 (
			>>"%LogBat%" Echo +++ success Move /Y %1 %2
		) Else (
			>>"%LogBat%" Echo --- failure Move /Y %1 %2
			>>"%LogBat%" Echo --- failure Move /Y %1 %2
		)
GoTo :Eof

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

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

Отправлено: 22:46, 01-12-2018 | #17


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


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

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


megaloman, огромное спасибо. Теперь всё работает. Правда в самой командной строке при отработке bat'ника вместо русского крякозябры, но в итоге с конечными файлами всё отлично.

Отправлено: 23:05, 01-12-2018 | #18


Ветеран


Contributor


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

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


rider42,
Цитата rider42:
Правда в самой командной строке при отработке bat'ника вместо русского крякозябры »
А оно Вам надо? Для этого есть лог-файл.

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

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

Отправлено: 23:11, 01-12-2018 | #19


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


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

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


Цитата megaloman:
А оно Вам надо? Для этого есть лог-файл. »
Нее, ни разу. Просто подумал, что это надо озвучить на всякий случай. И ещё раз огромное спасибо!

Отправлено: 23:13, 01-12-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Перемещение файлов в папки с аналогичными именами londondron Скриптовые языки администрирования Windows 12 22-03-2017 15:22
Разное - Операция Перемещение файлов kaplyaas Microsoft Windows 10 5 10-12-2016 15:59
CMD/BAT - Создание папок и файлов со с случайными именами. Kirstem Скриптовые языки администрирования Windows 0 26-04-2015 20:06
текстовый файл с именами всех файлов в папке socap AutoIt 19 19-02-2012 16:42
Проблема с русскими именами файлов iml Общий по Linux 7 25-09-2006 12:40




 
Переход