Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.63
holopow
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 2
#1

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

22.02.2013, 22:21. Просмотров 5253. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Переименовать файл в имя папки (CMD/BAT):

Переименовать файл в имя папки, в которой он находится - CMD/BAT
скажите, а можно ли прописать чтобы файл переименовывался так как называется папка в которой лежат и этот файл и батник?

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

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

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

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

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

9
Dragokas
Эксперт WindowsАвтор FAQ
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 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
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 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
1628 / 337 / 39
Регистрация: 15.10.2012
Сообщений: 529
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
16613 / 6998 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
02.07.2013, 23:44 #9
Smitis, о да, это интересный синтаксический разбор. Не знал, что так работает.
0
Миниатюры
Переименовать файл в имя папки  
Smitis
1628 / 337 / 39
Регистрация: 15.10.2012
Сообщений: 529
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
Привет! Вот еще темы с ответами:

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

Написать командный файл, применяющий при старте один параметр — имя папки для разбора... - CMD/BAT
Задание 1. Написать командный файл применяющий при старте 1 параметр - имя папки для разбора. Разбор папки заключается в следующем: Все...

Переименовать файлы в папках по имени папки - CMD/BAT
Здравствуйте. Нужна помощь... Есть много папок , в каждой папке лежит картинка ( произвольное_имя_файла.bmp ) Нужно переименовать...

Переименовать файлы, добавив к имени каждого имя каталога, в котором он находится - CMD/BAT
Во всех подкаталогах текущего каталога переименовать все файлы из D:\Videos\2017\2017-01-01\IMG_4841.MOV в ...


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

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

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