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

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

Ответить
Настройки темы
CMD/BAT - [решено] Имя файла из строки копируемого файла.

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


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

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


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

Отправлено: 23:14, 24-08-2010

 

Пользователь


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

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


gora,

спасибо, да так действительно попроще, а вот "нововведение" про чтение с 25-го символа я незаметил...

Отправлено: 21:13, 25-08-2010 | #11



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

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


Аватара для gora

Ушёл из жизни


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

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


Цитата deepred:
"нововведение" про чтение с 25-го символа я незаметил »
Я взял прикрепленный файл, а в нем вторая строка такова:
Код: Выделить весь код
Отделы отчетный N  8456/2060

Отправлено: 21:17, 25-08-2010 | #12


Пользователь


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

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


gora,

да-да, но опять таки - можно было ориентироваться на < "tokens=2 delims=/" >
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:48, 25-08-2010 | #13


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


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

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


Всем спасибо! Все работает отлично.

Отправлено: 22:08, 25-08-2010 | #14


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


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

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


Код: Выделить весь код
Echo on & Chcp 1251  
Setlocal EnabledelayedExpansion  
Set "$SRS=F:\probe\переименование\001\" & rem папка источник  
Set "$DST=F:\probe\переименование\002\" & rem папка приемник    
Cd %$SRS%  For /f %%a in ('Dir /b %$SRS%') Do call :RNCOPY "%%a"  
goto :EOF    
:RNCOPY  
For /f "skip=1 tokens=*" %%b in (%$SRS%%~1) Do ( 
 	Set $nm=%%b
  	Set $nm=!$nm:~24,4!
  	Copy "%$SRS%%~1" "%$DST%!$nm!%~x1"  	
goto :Eof  )
Подскажите пожалуйста как сделать чтобы название файла бралось не с одной строки, а с нескольких. Пример текста в файле:
Код: Выделить весь код
               МЕМОРИАЛЬНИЙ ОРДЕР N-R=100211
                 от 20 июня 2010 г.                    




000                                        352200000
Надо чтобы имя получилось "от 20 июня 2010 г._Dt3522_100211.txt", т.е. вторая строка с 17символа(18)&"_Dt"&шестая строка c 48 символа(4)&"_"&первая строка с 39 символа(6).

Отправлено: 22:11, 04-10-2010 | #15


Аватара для gora

Ушёл из жизни


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

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


Seryoga204, сделано по, предоставленному Вами, образцу файла
Код: Выделить весь код
@Echo Off & Chcp 1251>Nul
Setlocal EnabledelayedExpansion
Set "$SRS=F:\probe\переименование\001\" & rem папка источник
Set "$DST=F:\probe\переименование\002\" & rem папка приемник

Cd %$SRS%
For /f %%a in ('Dir /b %$SRS%') Do call :RNCOPY "%%a"
goto :EOF

:RNCOPY
Set cnt=0
For /f "tokens=* delims=" %%b in (%$SRS%%~1) Do (
	Set /a cnt+=1
	Set $nm=%%b
	If !cnt!==1 Set $lin!cnt!=!$nm:~38,6!
	If !cnt!==2 Set $lin!cnt!=!$nm:~17,18!
	If !cnt!==3 Set $lin!cnt!=!$nm:~43,4!
)
Copy "%$SRS%%~1" "%$DST%!$lin2!_Dt!$lin3!_!$lin1!%~x1">Nul
goto :Eof
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:48, 05-10-2010 | #16


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


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

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


gora,
Спасибо большое!

Последний раз редактировалось Seryoga204, 05-10-2010 в 20:41.


Отправлено: 20:14, 05-10-2010 | #17


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


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

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


Подскажите пожалуйста, использую код
Код: Выделить весь код
Echo on & Chcp 1251
Setlocal EnabledelayedExpansion
Set "$SRS=F:\probe\переименование\001\" & rem папка источник
Set "$DST=F:\probe\переименование\002\" & rem папка приемник

Cd %$SRS%
For /f %%a in ('Dir /b %$SRS%') Do call :RNCOPY "%%a"
goto :EOF

:RNCOPY
For /f "skip=1 tokens=*" %%b in (%$SRS%%~1) Do (
	Set $nm=%%b
	Set $nm=!$nm:~24,10!
	Copy "%$SRS%%~1" "%$DST%!$nm!%~x1"
	goto :Eof
)
Под отбор попадает как раз фрагмент строки с датой(типа: 01/01/2011 ), но так как имеет место символ "/", батник не может присвоить данное название файлу, как поступить в таком случае? Чтобы имя файла было 2011-01-01.txt Подскажите пожалуйста.

Отправлено: 23:31, 07-03-2011 | #18


Ветеран


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

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


AlexVong, попробовать дополнительно воспользоваться заменой «set VarY=%VarX:/=-%»?!
Цитата set /?:
Подстановка переменной среды может быть расширена следующим образом:
Код: Выделить весь код
%PATH:str1=str2%
расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может начинаться со звездочки, и в этом случае это будет соответствовать любому началу расширенного вывода до первого вхождения оставшейся части "str1".
Пример:
Код: Выделить весь код
@echo off
setlocal

set sName=01/01/2011
set sName=%sName:/=-%

echo %sName%

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

Отправлено: 03:11, 08-03-2011 | #19


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


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

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


А как сделать чтобы это имя выводилось на экран? Типа "скопирован файл за sName"

Отправлено: 19:41, 16-03-2011 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Полное имя файла 007 Microsoft Windows 7 12 18-11-2009 09:25
Интерфейс - Не обрезать имя файла slfly Microsoft Windows 2000/XP 1 01-11-2009 12:17
[решено] Удаление строки из файла gregaz AutoIt 2 16-07-2009 18:46
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. Nun-Nun Скриптовые языки администрирования Windows 6 13-05-2009 13:28
Интернет - [решено] Не могу сохранить имя файла Chelovek16 Microsoft Windows 2000/XP 2 13-07-2008 12:01




 
Переход