Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Поиск и копирование

Аватара для Butunin Klim

Ветеран


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

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


Суть вопроса такова.
Есть папка с dbx файлами, но имя папки меняется постоянно, по этому нужно найти в этой папке подпаку которая меняет название. (я так понимаю просто нужно найти файлы с dbx расширением.)
Путь к папке \\server\profile\%username%\db\имя случайной папки\*.dbx

есть путь куда это надо скопировать. Не пойму как сделать... кто смыслит хелп! путь \\server2\profile\%username%\db\

-------
Сообщение помогло? В знак благодарности НАЖМИТЕ ПОЛЕЗНОЕ СООБЩЕНИЕ

Мы зрим не то, что есть вокруг,
А то, что можем видеть зримо.
А то, что зреть не достижимо
Нам не узреть во век веков.

Мой веб-магазин товары Amway http://butunina.ru


Отправлено: 18:37, 25-05-2011

 

Ветеран


Contributor


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

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


У меня работает! Правда, не сразу: я скопировал Ваш код, вставил в текстовый редактор FAR, обнаружил, что на конце Ваших строк
Код: Выделить весь код
Set Dir=D:\ 
Set FileName=Конкретное имя файла.txt
есть лишние пробелы. Проверьте, чтобы их не было. Сделайте Echo On в начале, посмотрите, как батник выполняется. Какие пути файла получаются в For. И, надеюсь, коль у Вас русские буквы, Вы сделали батник в 866 кодировке.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 01:23, 14-06-2011 | #11



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

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


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


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

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


megaloman, А теперь понимаю в чем причина, файл я ищу на разных дисках, а ты как я поминаю указываешь на корень диска D ?

по моей задаче он может оказаться где угодно

Отправлено: 10:48, 14-06-2011 | #12


Ветеран


Contributor


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

Профиль | Отправить 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
А если не надо по всем дискам, а только в некоторых указанных местах, то вот еще вариант
Код: Выделить весь код
@Echo Off
cls  
Set FileName=Конкретное имя файла.txt  

Call :SetDir D:\ 
Call :SetDir "E:\Во поле берёзка стояла\"
Call :SetDir H:\ 
Call :SetDir E:\Delete\ 

GoTo :Eof

:SetDir
Далее то же, что и в предыдущем случае

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 12:11, 15-06-2011 | #13


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


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

Профиль | Отправить 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


Ветеран


Contributor


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

Профиль | Отправить 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
Благодарности: 49

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


megaloman, вот в этом и проблема при использовании переменных %FilePath%\%FileName2% в режиме Echo on пишет путь вот так : "C:\Program Files\папка\ \файл" и потом что не может обнаружить путь.

Отправлено: 22:09, 16-06-2011 | #16


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


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

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


megaloman, еще раз все перепроверил и действительно похоже все дело в лишних пробелах, причем не в тех строках какие дают ошибки. Большое спасиб оза помощь.

Появился еще вопрос, а как организовать так что бы когда находится нужный файл далее поиск не происходил?

Последний раз редактировалось profcom, 17-06-2011 в 14:00.


Отправлено: 10:26, 17-06-2011 | #17


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


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

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


Или это невозможно осуществить через bat?

Отправлено: 21:26, 27-06-2011 | #18


Googler


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

Профиль | Отправить 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:
как организовать так что бы когда находится нужный файл далее поиск не происходил? »
отменить поиск текущего диска (прервать работу DIR) нельзя, но можно пропустить сканирование других дисков и/или копирование файла:
Код: Выделить весь код
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:\" If Defined FFind (
For /F "Delims=" %%i IN ('DIR/B/S/A-D "%%d:\%FFind%"') Do If Defined FFind Copy/Y "%FCopy%" "%%~dpi"&& Set "FFind="
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:23, 28-06-2011 | #19


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


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

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


Вот это именно то что и было нужно. Большое спасибо за помощь.

Отправлено: 11:34, 28-06-2011 | #20



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

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход