|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Имя файла из строки копируемого файла. |
|
|
CMD/BAT - [решено] Имя файла из строки копируемого файла.
|
Новый участник Сообщения: 41 |
Профиль | Отправить PM | Цитировать Подскажите пожалуйста, можно переименовать все копируемые файлы из директории, чтобы их имена соответствовали тексту содерж. в них самих во второй строке с 10 по 15 знак.
|
|
Отправлено: 23:14, 24-08-2010 |
Пользователь Сообщения: 140
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Цитата:
вот 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
|
Профиль | Отправить PM | Цитировать Цитата:
хотелось чтобы файл назывался 2060.txt Цитата:
|
||
Отправлено: 00:38, 25-08-2010 | #4 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 01:44, 25-08-2010 | #5 |
Новый участник Сообщения: 41
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Seryoga204,
Цитата Seryoga204:
Цитата Seryoga204:
Цитата Seryoga204:
Цитата Seryoga204:
|
||||
Отправлено: 19:24, 25-08-2010 | #7 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Вот пример файлика, кол-во строк может быть разным, но структура первых трех всегда одинаковая.
Цитата:
Цитата:
|
||
Отправлено: 19:53, 25-08-2010 | #8 |
Пользователь Сообщения: 140
|
Профиль | Отправить 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 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить 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 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Полное имя файла | 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 |
|