Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
MrAlex
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 4
1

Изменение расширения файлов

03.09.2015, 00:34. Просмотров 1570. Ответов 6
Метки нет (Все метки)

Есть некая папка, в которой лежат бэкапы в формате file.zip.
При запуске первого батника, у всех файлов, (включая файлы в подпапках),
меняется расширение с file.zip на file.backup.
При запуске второго батника - наоборот(с backup на zip).
У меня получилось так:
1)
Bash
1
for /r "C:\Users\Mr\Desktop\test" %%x in (*.backup?) do ren "%%x" "*.zip"
2)
Bash
1
for /r "C:\Users\Mr\Desktop\test" %%x in (*.zip?) do ren "%%x" "*.backup"
Подскажите пожалуйста, как их объединить в один батник, что бы при запуске получилось примерно так:
Если есть .zip, то менялось бы на .backup, если нет, то наоборот с .backup на .zip
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2015, 00:34
Ответы с готовыми решениями:

Смена расширения файлов
Даже не знаю как описать.. Допустим, в C:\Temp много-много файлов с разными расширениями и также...

Переименование расширения файлов
Возможно ли переименовать расширение файлов (например AVI в mp4) с помощью какой-нибудь команды в...

Копирование файлов со сменой расширения
ребят, помогите батником. необходимо, чтобы тот содержал в себе две операции: 1) удаление всех...

Как массово изменить расширения файлов?
У меня есть много файлов с расширением .ph, они разбросаны по разным папкам, вложенным в одну...

Смена атрибутов файлов определенного расширения
Разработать пакетный файл для смены атрибутов файлов определенного расширения. Выбор атрибутов...

6
volodin661
2183 / 971 / 163
Регистрация: 10.12.2013
Сообщений: 3,257
03.09.2015, 01:58 2
элементарно, Ватсон,

только для простоты давай придумаем, что вместо .backup будет .bck

и теперь, если по-xor-ить расширение "zip" со строкой "8*;", то получаем "BCK",
a если по-xor-ить расширение "BCK" с той же строкой "8*;", то неминуемо получаем "zip"

не знаю, умеет ли 'ксорить' ватник, но javascript точно умеет.



PS: XOR - это оператор "исключающее ИЛИ"
1
Black Fregat
2763 / 1423 / 392
Регистрация: 31.05.2009
Сообщений: 5,284
03.09.2015, 02:07 3
Если не слишком долго думать, ставьте подряд три цикла переименования:
1) .zip -> .mycooltemp
2) .backup -> .zip
3) .mycooltemp -> .backup
1
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
03.09.2015, 07:05 4
MrAlex, по аналогии http://www.cyberforum.ru/post8025228.html
1
ComSpec
3409 / 1953 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
03.09.2015, 08:38 5
Лучший ответ Сообщение было отмечено MrAlex как решение

Решение

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
 
set "dir=C:\Users\Mr\Desktop\test"
 
cmd/c "for /r "%dir%" %%i in ("*.zip") do @exit/b 111"
 
if %errorlevel% equ 111 (call :sub ".zip" ".backup") else (call :sub ".backup" ".zip")
 
exit/b 0
 
 
:sub
 2>nul (for /f "delims=" %%i in ('dir/a-d/b/s "%dir%\*%~1"') do ren "%%i" "%%~ni%~2")
 goto :eof
3
MrAlex
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 4
03.09.2015, 21:23  [ТС] 6
Всем спасибо за ответы!
Тоже пробовал через условие (if...else...), но видимо с синтаксисом напутал, батники пишу редко.
Понадобилось хоть как то защитить бэкапы 1с от шифровальщиков, теперь должно помочь.

Добавлено через 3 часа 19 минут
И ещё такой вопрос. Как правильно добавить ещё одно изменяемое расширение (например file.rar)?
0
ComSpec
3409 / 1953 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
04.09.2015, 00:48 7
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Цитата Сообщение от MrAlex Посмотреть сообщение
Как правильно добавить ещё одно изменяемое расширение (например file.rar)?


Ну если это расширение файлов добавить в код именно правильно, то тогда код будет таким:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
 
set "dir=C:\Users\Mr\Desktop\test"
 
pushd "%dir%"
 
cmd/c "for /r %%i in ("*.zip" "*.rar") do @exit/b 111"
 
if %errorlevel% equ 111 (call :sub ".zip" ".rar" x ".backup") else (call :sub ".zip.backup" ".rar.backup")
 
popd
 
exit/b 0
 
 
:sub
 2>nul (for /f "delims=" %%i in ('dir/a-d/b/s "*%~1" "*%~2"') do ren "%%i" "%%~n%3i%~4")
 goto :eof
.

Обратите внимание, что файлы в этом случае будут переименованы по маскам "*.zip.backup" и "*.rar.backup", иначе при обратном переименовании будет невозможно простым способом установить первоначальные расширения файлов, да и такое переименование позволит исключить возможные конфликты между одинаковыми имёнами файлов с разными расширениями.
0
04.09.2015, 00:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2015, 00:48

Вывод на экран всех файлов заданного расширения
) Создать командный файл, который бы выводил на экран все файлы заданного расширения. Если...

Удаление файлов без расширения c использованием Cygwin
HELP! HELP! HELP! В скрипте, запускаемом через шелл Cygwin'а, удаляется файл с пустым...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru