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

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

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

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


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

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


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

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

 

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


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

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


Seryoga204,

на скорую руку, хотя надо еще попробовать с enableddelayedexpansion. Какая у Вас ОС?
Код: Выделить весь код
Echo on & [b]Chcp 1251[b]
Set "$SRS=F:\probe\переименование\001" & rem папка источник
Set "$DST=F:\probe\переименование\002" & rem папка приемник

Cd %$SRS%
For /f %%a in ('Dir /b %$SRS%') Do ^
For /f "skip=1" %%b in (%%~a) Do ^
call :RNCOPY "%%b" "%%a"
goto :EOF
:RNCOPY
Set $nm=%~1
Set $nm=%$nm:~9,6%
Copy "%~2" "%$DST%\%$nm%~x2"

Последний раз редактировалось deepred, 25-08-2010 в 01:13.

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

Отправлено: 23:44, 24-08-2010 | #2



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

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


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


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

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


Цитата:
Какая у Вас ОС?
Win XP.SP3
вот log

Код: Выделить весь код
L:\TOOLS\Print>Echo on   & Chcp 866
Текущая кодовая страница: 866

L:\TOOLS\Print>Set $SRS="L:\1"   & rem яряър шёЄюіэшъ

L:\TOOLS\Print>Set $DST="L:\2"   & rem яряър яЁшхьэшъ

L:\TOOLS\Print>Cd "L:\1"

L:\1>For /F %a in ('Dir /b "L:\1" ') Do For /F "skip=1" %b in (%~a) Do call :RNC
OPY "%b" "%a"

L:\1>For /F "skip=1" %b in (0000) Do call :RNCOPY "%b" "0000"

L:\1>call :RNCOPY "отделы" "0000"

L:\1>Set $nm=отделы

L:\1>Set $nm=

L:\1>Copy "0000" ""L:\2" \~x2"
Системе не удается найти указанный путь.
Скопировано файлов:         0.

Последний раз редактировалось Seryoga204, 25-08-2010 в 00:19.


Отправлено: 23:48, 24-08-2010 | #3


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


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

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


Цитата:
Строка №2 содержит пробелы?
пример: отделы отчетный № 8456/2060
хотелось чтобы файл назывался 2060.txt
Цитата:
"Chcp 1251"
Файлы в досовской кодировке, или это не влияет?

Отправлено: 00:38, 25-08-2010 | #4


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


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

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


deepred, Спасибо большое! Подскажите пожалуйста как на первом примере вытащить из файла не первое слово 2-ой строки, а всю строку
Код: Выделить весь код
1>call :RNCOPY "отделы отчетный № 8456/2060" "0000"

Отправлено: 01:44, 25-08-2010 | #5


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


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

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


deepred,
Код: Выделить весь код
Код:  Echo on & Chcp 866 
Set $SRS="F:\probe\переименование\001"  
Set $DST="F:\probe\переименование\002"    
Cd %$SRS%  For /f %%a in ('Dir /b %$SRS%') Do ^  
For /f "skip=1 tokens=2 delims=/" %%b in (%%~a) Do ^  
Copy "%%a" "%$DST%\%%b%%~xa"  
pause
Почему то берется название не со второй строки, а почти со всех где в тексте есть "/".
Из 20 файлов в папке "F:\probe\переименование\002" появилось 4900 шт.
Первый пример берет название из нужной (из второй строки), но лиш первое слово "отделы", а надо из второй строки : "отделы отчетный № 8456/2060............................" извлечь 2060 (с 24-ого по 27-ой символ). Структура второй строки во всех файлах одинаковая. Буду эксперементировать. Спасибо.

Отправлено: 18:54, 25-08-2010 | #6


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


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

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


Seryoga204,

Цитата Seryoga204:
в них самих во второй строке с 10 по 15 знак. »
Цитата Seryoga204:
отделы отчетный № 8456/2060 »
Цитата Seryoga204:
вытащить из файла не первое слово 2-ой строки, а всю строку »
Цитата Seryoga204:
а надо из второй строки : "отделы отчетный № 8456/2060............................" извлечь 2060 (с 24-ого по 27-ой символ) »
приведите, что у Вас во второй строке полностью и пример последующих строк..., на этом раз счет символов именно тот, который нужно извлекать?

Отправлено: 19:24, 25-08-2010 | #7


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


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

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


Вложения
Тип файла: txt 1.txt
(2.1 Kb, 10 просмотров)

Вот пример файлика, кол-во строк может быть разным, но структура первых трех всегда одинаковая.
Цитата:
в них самих во второй строке с 10 по 15 знак.
- обшибся в начале, надо имено
Цитата:
"отделы отчетный № 8456/2060" извлечь 2060 даже не (с 24-ого по 27-ой символ) а с 25-ого по 28-ой символ (там есть два пробела вместе)

Отправлено: 19:53, 25-08-2010 | #8


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


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

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


Seryoga204,

попробуйте:
Код: Выделить весь код
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 ^
For /f "skip=1" %%b in (%$SRS%%%~a) Do (
set /a $N+=1
call :RNCOPY "%%b" "%%a")
goto :EOF


:RNCOPY
If /i %$N% GTR 1 set $N=0 & goto :Eof
Set $nm=%~1
Set $nm=%$nm:~23,4%
Copy "%$SRS%%~2" "%$DST%%$nm%%~x2"
предыдущие посты с кодами я удалил - условиям задачи они не соответствуют... (да я уже на них смотрю и не понимаю, что сделать надо было....)

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


Аватара для gora

Ушёл из жизни


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

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


deepred, немного упростил и подправил Ваш вариант:
Код: Выделить весь код
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
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:46, 25-08-2010 | #10



Компьютерный форум 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




 
Переход