![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск и копирование |
|
CMD/BAT - [решено] Поиск и копирование
|
Ветеран Сообщения: 1482 |
Суть вопроса такова.
Есть папка с dbx файлами, но имя папки меняется постоянно, по этому нужно найти в этой папке подпаку которая меняет название. (я так понимаю просто нужно найти файлы с dbx расширением.) Путь к папке \\server\profile\%username%\db\имя случайной папки\*.dbx есть путь куда это надо скопировать. Не пойму как сделать... кто смыслит хелп! путь \\server2\profile\%username%\db\ |
|
------- Отправлено: 18:37, 25-05-2011 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать У меня работает! Правда, не сразу: я скопировал Ваш код, вставил в текстовый редактор FAR, обнаружил, что на конце Ваших строк
есть лишние пробелы. Проверьте, чтобы их не было. Сделайте Echo On в начале, посмотрите, как батник выполняется. Какие пути файла получаются в For. И, надеюсь, коль у Вас русские буквы, Вы сделали батник в 866 кодировке.
|
------- Отправлено: 01:23, 14-06-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать megaloman, А теперь понимаю в чем причина, файл я ищу на разных дисках, а ты как я поминаю указываешь на корень диска D ?
по моей задаче он может оказаться где угодно |
Отправлено: 10:48, 14-06-2011 | #12 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать profcom, Как спрошено, так и отвечено
![]() @Echo Off cls Set FileName=Конкретное имя файла.txt 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:\ GoTo :Eof :SetDir Set Dir=%~1 If Not Exist %Dir% GoTo :Eof Echo +++ Ищем в %1 FOR /F "usebackq delims=" %%i IN (`Dir /b /s /A:-D "%Dir%%FileName%"`) DO Call :PathFile "%%i" GoTo :Eof :PathFile Set FilePath=%~dp1 Echo %FilePath% %1 GoTo :Eof |
------- Отправлено: 12:11, 15-06-2011 | #13 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать megaloman, Не подскажешь как развить дальше батник, не удается обновить файл. Пишет что не может найти путь. Смысл в каталоге по найденному файлу обновить другой файл.
@Echo On cls 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:\ GoTo :Eof :SetDir Set Dir=%~1 If Not Exist %Dir% GoTo :Eof Echo Ищем в %1 FOR /F "usebackq delims=" %%i IN (`Dir /b /s /A:-D "%Dir%%FileName%"`) DO Call :PathFile "%%i" GoTo :Eof :PathFile Set FilePath=%~dp1 Echo %FilePath% %1 Del "%FilePath%\%FileName2%" /q/f/a/s xCOPY "%TEMP%\%FileName2%" "%FilePath%" /Q /Y /R /C GoTo :Eof |
Последний раз редактировалось profcom, 16-06-2011 в 17:18. Отправлено: 17:12, 16-06-2011 | #14 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать 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 и рассматривайте что содержится в строках при исполнении батника, особенно в именах (путях) файлов - никаких лишних пробелов нигде в путях не должно быть. Будет время, нарисую скрипт, который будет убивать конечные пробелы. |
------- Отправлено: 21:58, 16-06-2011 | #15 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать megaloman, вот в этом и проблема при использовании переменных %FilePath%\%FileName2% в режиме Echo on пишет путь вот так : "C:\Program Files\папка\ \файл" и потом что не может обнаружить путь.
|
Отправлено: 22:09, 16-06-2011 | #16 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать megaloman, еще раз все перепроверил и действительно похоже все дело в лишних пробелах, причем не в тех строках какие дают ошибки. Большое спасиб оза помощь.
Появился еще вопрос, а как организовать так что бы когда находится нужный файл далее поиск не происходил? |
Последний раз редактировалось profcom, 17-06-2011 в 14:00. Отправлено: 10:26, 17-06-2011 | #17 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Или это невозможно осуществить через bat?
|
Отправлено: 21:26, 27-06-2011 | #18 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата profcom:
Set "FFind=файл.txt" Set "FCopy=%TEMP%\файл.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 If Exist "%%d:\" ( For /F "Delims=" %%i IN ('DIR/B/S/A-D "%%d:\%FFind%"') Do Copy/Y "%FCopy%" "%%~dpi" ) Цитата profcom:
|
||
Отправлено: 08:23, 28-06-2011 | #19 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Вот это именно то что и было нужно. Большое спасибо за помощь.
|
Отправлено: 11:34, 28-06-2011 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск папки и Копирование файла в данную папку из известного места | dark-------13 | Скриптовые языки администрирования Windows | 4 | 20-04-2011 11:48 | |
CMD/BAT - [решено] Поиск строк с указанным словом и копирование их в отдельный файл | Maartimus | Скриптовые языки администрирования Windows | 2 | 13-07-2010 20:25 | |
CMD/BAT - [решено] Поиск каталога и копирование всего его содержимого | desk | Скриптовые языки администрирования Windows | 4 | 01-07-2009 14:28 | |
[решено] Работа с html-кодом страницы, поиск и копирование нужных строк | Sestrichka | AutoIt | 14 | 02-04-2009 16:51 | |
[решено] Поиск файлов в подпапках и их последующее копирование | D_Master | AutoIt | 4 | 10-02-2009 07:32 |
|