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

Переименовать файл в имя папки

22.02.2013, 22:21. Просмотров 5715. Ответов 9
Метки нет (Все метки)

Доброго времени суток всем!

Есть каталог foldername.
В нем находятся несколько файлов .ts
Простейшим скриптом эти файлы собираются в один .ts
Bash
1
copy /b *.ts all.ts
требуется добавить в скрипт строку переименовывающую результирующий all.ts по имени папки, то есть в foldername.ts
ну или сразу собирать его по такому образцу
Bash
1
copy /b *.ts foldername.ts
Заранее спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2013, 22:21
Ответы с готовыми решениями:

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

Переименовать файл в имя папки, в которой он находится
есть 30 папок с разными названиями в каждой папке 1 файл, его надо...

Переименовать файл, взяв имя из другого файла
Всем привет, прошу прощения за глупый, возможно вопрос. Стоит задача...

Переименовать файл в имя, найденное в содержимом другого файла
Помогите пожалуйста. Необходимо переименовать файл test.txt Имя файла...

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

9
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
22.02.2013, 22:42 2
Забавно. На самом деле ее штатными средствами не так просто получить.

Вот код:
Bash
1
2
3
4
5
6
@echo off
set fullpath=%~dp0
set fullpath=%fullpath:~0,-1%
set units="%fullpath:\=" "%"
for %%a in (%units%) do Set folder=%%~a
copy /b %~dp0*.ts "%~dp0%folder%.ts"
1
holopow
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 2
22.02.2013, 22:49 3
Dragokas, Огромное спасибо.
Сегодня полдня вокруг %~dp0 прыгал Ничего путного сам не сделал.
Ваш скрипт работает отлично! Еще раз спасибо!
0
sov44
1758 / 742 / 128
Регистрация: 09.04.2011
Сообщений: 1,313
22.02.2013, 23:41 4
Лучший ответ Сообщение было отмечено как решение

Решение

Dragokas, прикольный способ определения папки, где батник
ещё, как вариант
Bash
1
2
3
4
5
@Echo Off
set inst=%~dp0
For /D %%a In ("%inst:~0,-1%.txt") Do echo folder=%%~na
Pause
Exit
2
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
23.02.2013, 00:00 5
А я вообще не знаю как ней (/D) пользоваться, если в наборе нет подстановочных знаков (согласно справке, FOR в этом случае воспринимает "набор" как имя файла).

Я у тебя впервые вижу единственный практический пример реализации этой функции.
0
sov44
1758 / 742 / 128
Регистрация: 09.04.2011
Сообщений: 1,313
23.02.2013, 00:11 6
Цитата Сообщение от Dragokas Посмотреть сообщение
А я вообще не знаю как ней (/D) пользоваться
в коде не принципиально, что за ключ в for, можно и без ключа
0
sov44
1758 / 742 / 128
Регистрация: 09.04.2011
Сообщений: 1,313
02.07.2013, 22:01 7
Директория, из которой запущен скрипт (подсмотрел у Iska )
Bash
1
2
3
4
5
6
@echo off
setlocal enabledelayedexpansion
 
for %%i in ("%cd%") do set "name=%%~nxi"
echo %name%
pause
0
Smitis
1629 / 338 / 39
Регистрация: 15.10.2012
Сообщений: 530
02.07.2013, 23:18 8
Цитата Сообщение от sov44 Посмотреть сообщение
Директория, из которой запущен скрипт (подсмотрел у Iska )
Bash
1
2
3
4
5
6
@echo off
setlocal enabledelayedexpansion
 
for %%i in ("%cd%") do set "name=%%~nxi"
echo %name%
pause
Не получится. %cd% - это текущая папка. Да, она _может_ совпасть с папкой, из которой запущен скрипт, но рассчитывать на это не стоит. Разбирать надо %dp0 или %f0
Например
Bash
1
for %%i in ("%~f0\..") do echo [%%~nxi]
(для корня диска будет "пусто")
1
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
02.07.2013, 23:44 9
Smitis, о да, это интересный синтаксический разбор. Не знал, что так работает.
0
Миниатюры
Переименовать файл в имя папки  
Smitis
1629 / 338 / 39
Регистрация: 15.10.2012
Сообщений: 530
03.07.2013, 00:22 10
Цитата Сообщение от Dragokas Посмотреть сообщение
о да, это интересный синтаксический разбор. Не знал, что так работает.
Можно и более сложные относительные пути .\..\..\prg\ddd\..\hhh

Добавлено через 7 минут
Причём даже существование промежуточных папок не обязательно. Они, как бы, сокращаются. Так имя файла в %f0 не являющеся папкой по определению, компенсируется переходом на уровень вверх ..

Добавлено через 7 минут
П.С.
Да и вообще, при подобном преобразовании системе пофигу, что там существует на самом деле. Путь просто "выпрямляется".
2
03.07.2013, 00:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2013, 00:22

Найти файл по сегодняшней дате и переименовать его в имя, являющееся вчерашней датой
доброго времени суток помогите пожалуйста юзеру есть папка допустим с:\1 туда...

Как переименовать каждый файл в имя, являющееся записанным в этом же файле значением параметра "slug"?
Многие наверно знают как работают генераторы статичных сайтов. Они хранят...

Написать командный файл, применяющий при старте один параметр — имя папки для разбора...
Задание 1. Написать командный файл применяющий при старте 1 параметр - имя...


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

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

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