![]() |
Поиск и копирование
Суть вопроса такова.
Есть папка с dbx файлами, но имя папки меняется постоянно, по этому нужно найти в этой папке подпаку которая меняет название. (я так понимаю просто нужно найти файлы с dbx расширением.) Путь к папке \\server\profile\%username%\db\имя случайной папки\*.dbx есть путь куда это надо скопировать. Не пойму как сделать... кто смыслит хелп! путь \\server2\profile\%username%\db\ |
Код:
@Echo Off Код:
FOR /F "usebackq delims=" %%i IN (`DIR %Otkuda% /b /A:D`) DO if Exist "%Otkuda%%%i\*.dbx" xcopy "%Otkuda%%%i\*.dbx" %Kuda% /Q /Y /R /C >nul |
Если в пути есть символы кириллицы, например:
\\server\profile\Рога и копыта\db\ то скрипт следует обязательно записат в 866 кодировке (например, в редакторе файл-менеджера FAR), либо (если, например, в стандартном блокноте), начать вот таким образом @Echo Off chcp 1251 и далее текст скрипта как он был ранее |
А как быть если искать надо конкретное имя файла, и записать например потом путь в переменную ?
|
Код:
@Echo Off |
Продолжение истории с поиском файла и копирование откуда -куда.
@Echo Off Set Otkuda=\\server\profile\%username%\db\ Set Kuda=\\server2\profile\%username%\db\ с откуда разобрались тут все гуд. Теперь вопрос встал ребром. в папке \\server2\profile\%username%\db\ Создается подпапка со случайным именем если ли возможность перехода на следующию папку ниже уровнем в дереве. Тобиш \\server2\profile\%username%\db\%random% и туда запихнуть то что было найдено с перезатеранием всего что там есть. (папку создавать руками нельзя) |
Код:
@Echo Off Код:
Set Ran=%Date:~6,4%%Date:~3,2%%Date:~0,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%%Time:~9,2% |
Ну это MS придумал.
Я так понимаю тут папка создается автоматически?! Это не сработает в нашем случае... Это папка от Microsoft Outlook создается она автоматом ... по сиду пользователя |
Megaloman
Привет. Смотри. При запуске аутлука у пользователя создается папка в "kyda" Создается она автоматически имя берется от сида пользователя. Задача следующая. У нас есть сервер где назодятся старые базы с письмами аутлука в формате Входящие.dbx отправленные.dbx и тд. Задача при первом входе пользователя и запуска аутлука что бы скрипт сам нашел на сервере текущие dbx и скопировал в профиль пользователя по пути "kyda" + вот этот сид который создается. Я не могу понять как сохранить эти файлы в путь "kyda"\SID |
Код:
@Echo Off и ищет на диске D, хотя нам нужно определить и букву диска. |
У меня работает! Правда, не сразу: я скопировал Ваш код, вставил в текстовый редактор FAR, обнаружил, что на конце Ваших строк
Код:
Set Dir=D:\ |
megaloman, А теперь понимаю в чем причина, файл я ищу на разных дисках, а ты как я поминаю указываешь на корень диска D ?
по моей задаче он может оказаться где угодно |
profcom, Как спрошено, так и отвечено :read: Вот вариант с опросом всех дисков
Код:
@Echo Off Код:
@Echo Off |
megaloman, Не подскажешь как развить дальше батник, не удается обновить файл. Пишет что не может найти путь. Смысл в каталоге по найденному файлу обновить другой файл.
Код:
@Echo On |
profcom, У Вас всё верно, но, похоже, болезнь всё та же: мешают лишние конечные пробелы в строках. Главные неприятности в строках
Set FileName=файл.txt Set FileName2=файл.exe FOR %%d IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO Call :SetDir %%d:\ Set Dir=%~1 Set FilePath=%~dp1 Я убрал пробелы, батник отработал. В таких случаях делайте Echo on и рассматривайте что содержится в строках при исполнении батника, особенно в именах (путях) файлов - никаких лишних пробелов нигде в путях не должно быть. Будет время, нарисую скрипт, который будет убивать конечные пробелы. |
megaloman, вот в этом и проблема при использовании переменных %FilePath%\%FileName2% в режиме Echo on пишет путь вот так : "C:\Program Files\папка\ \файл" и потом что не может обнаружить путь.
|
megaloman, еще раз все перепроверил и действительно похоже все дело в лишних пробелах, причем не в тех строках какие дают ошибки. Большое спасиб оза помощь.
Появился еще вопрос, а как организовать так что бы когда находится нужный файл далее поиск не происходил? |
Или это невозможно осуществить через bat?
|
Цитата:
Код:
Set "FFind=файл.txt" Цитата:
Код:
Set "FFind=файл.txt" |
Вот это именно то что и было нужно. Большое спасибо за помощь.
|
Время: 11:08. |
Время: 11:08.
© OSzone.net 2001-