|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перемещение файлов из одной папки в разные в зависимости от имени файла |
|
CMD/BAT - [решено] Перемещение файлов из одной папки в разные в зависимости от имени файла
|
Новый участник Сообщения: 4 |
Профиль | Отправить PM | Цитировать Здравствуйте!
Есть набор файлов с именами вида abcdXXXef.ext в папке C:\Folder1. Требуется переместить их в соответствующие подпапки с именами XXX (т.е. с тем же названием), находящиеся в папке C:\Folder2. Например, файл C:\Folder1\abcd123ef.ext надо переместить в папку C:\Folder2\123, файл C:\Folder1\abcd456ef.ext в папку C:\Folder2\456 и т.д. |
|
Отправлено: 09:40, 19-09-2011 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать @echo off setlocal enabledelayedexpansion set "dir1=C:\Folder1" set "dir2=C:\Folder2" set "ext=*.ext" pushd "%dir1%" && ( for %%a in (%ext%) do ( set "fn=%%a" md "%dir2%\!fn:~4,3!" 2>nul move "%%a" "%dir2%\!fn:~4,3!\" ) popd ) |
Последний раз редактировалось SendMessage, 19-09-2011 в 14:22. Причина: добавлен скрипт Отправлено: 14:01, 19-09-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Я понял задачу чуть иначе: в файлах 9 произвольных символов в имени, три в расширении. Надо их переместить в папки с именами, совпадающими с тремя (4+5+6) символами в имени файла. Решение двумя способами я привожу (один способ отличается от другого только организацией цикла по именам файлов). Ничего нового по сравнению с предыдущим ответом тут нет, но, однако, при этом я в очередной раз наткнулся на не совсем предсказуемую работу команд. У меня был набор следующих файлов в первой директории:
aaa abcd001ef.ext abcd001ef1.ext abcd001eg.ext abcd002ef.ext abcd002ef2.ext abcd002eg.ext bbb dddd В обоих кодах я оставил для отладки строку Echo %1 которую в рабочем режиме можно удалить. Я предполагал, что маска ?????????.??? гарантирует мне выборку файлов с именами в 9 символов. Увы, в обоих способах команда Echo %1 отображает все файлы из приведенного мной списка, хотя там в именах файлов встречается и 10 символов, и три, и четыре. Echo Off Set Folder1=D:\Delete\Folder1 Set Folder2=D:\Delete\Folder2 FOR %%f IN ("%Folder1%\?????????.???") DO Call :MoveXXX "%%f" GoTo :Eof :MoveXXX Echo %1 Set DirName=%~n1 Set DDD=%DirName%x If Not %DDD:~0,9%==%DirName% GoTo :Eof Set DirName=%DirName:~4,3% If Not Exist "%Folder1%\????%DirName%??.???" GoTo :Eof If Not Exist "%Folder2%\%DirName%" Md "%Folder2%\%DirName%" Move /Y "%Folder1%\????%DirName%??.???" "%Folder2%\%DirName%\" >NUL Строки кода Set DDD=%DirName%x If Not %DDD:~0,9%==%DirName% GoTo :Eof позволяют проконтролировать длину имени и добиться от батника ожидаемого результата. |
------- Последний раз редактировалось megaloman, 19-09-2011 в 17:04. Отправлено: 15:57, 19-09-2011 | #3 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:49, 19-09-2011 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
||
Отправлено: 04:20, 20-09-2011 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Добавление к имени файла имя папки | Arsenik77 | Скриптовые языки администрирования Windows | 12 | 13-08-2011 20:28 | |
VBS/WSH/JS - Перемещение файлов и папок в разные папки... | WalkManX | Скриптовые языки администрирования Windows | 0 | 07-08-2011 22:37 | |
CMD/BAT - [решено] Копирование имени папки/файла в буфер обмена | cpp.svet | Скриптовые языки администрирования Windows | 3 | 06-07-2011 19:16 | |
CMD/BAT - [решено] Перемещение устаревших файлов из папки в резервную папку | zavoruev | Скриптовые языки администрирования Windows | 22 | 28-05-2010 14:04 | |
Ошибка - Каракули в реестре "Синтаксическая ошибка в имени файла,имени папки или метке тома" | permas | Microsoft Windows 2000/XP | 2 | 20-02-2010 19:30 |
|