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

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

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

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

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

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

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

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

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

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

9
Dragokas
Эксперт WindowsАвтор FAQ
17127 / 7181 / 864
Регистрация: 25.12.2011
Сообщений: 10,971
Записей в блоге: 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
1764 / 748 / 128
Регистрация: 09.04.2011
Сообщений: 1,324
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
22.02.2013, 23:41
Dragokas
Эксперт WindowsАвтор FAQ
17127 / 7181 / 864
Регистрация: 25.12.2011
Сообщений: 10,971
Записей в блоге: 16
23.02.2013, 00:00 5
А я вообще не знаю как ней (/D) пользоваться, если в наборе нет подстановочных знаков (согласно справке, FOR в этом случае воспринимает "набор" как имя файла).

Я у тебя впервые вижу единственный практический пример реализации этой функции.
0
sov44
1764 / 748 / 128
Регистрация: 09.04.2011
Сообщений: 1,324
23.02.2013, 00:11 6
Цитата Сообщение от Dragokas Посмотреть сообщение
А я вообще не знаю как ней (/D) пользоваться
в коде не принципиально, что за ключ в for, можно и без ключа
0
sov44
1764 / 748 / 128
Регистрация: 09.04.2011
Сообщений: 1,324
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
1631 / 340 / 41
Регистрация: 15.10.2012
Сообщений: 531
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
17127 / 7181 / 864
Регистрация: 25.12.2011
Сообщений: 10,971
Записей в блоге: 16
02.07.2013, 23:44 9
Smitis, о да, это интересный синтаксический разбор. Не знал, что так работает.
0
Изображения
Тип файла: png path_file_backward_syntax.png (2.6 Кб, 72 просмотров)
Smitis
1631 / 340 / 41
Регистрация: 15.10.2012
Сообщений: 531
03.07.2013, 00:22 10
Цитата Сообщение от Dragokas Посмотреть сообщение
о да, это интересный синтаксический разбор. Не знал, что так работает.
Можно и более сложные относительные пути .\..\..\prg\ddd\..\hhh

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

Добавлено через 7 минут
П.С.
Да и вообще, при подобном преобразовании системе пофигу, что там существует на самом деле. Путь просто "выпрямляется".
2
03.07.2013, 00:22
Answers
Эксперт
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 - 2020, vBulletin Solutions, Inc.