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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Найти папки содержащие файл

Ответить
Настройки темы
Любой язык - Найти папки содержащие файл

Новый участник


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

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


Добрый день.
мне необходимо найти все папки, содержащие файл "test.txt".
желательно сразу их переместить в другую директорию.
может скрипт какой или программа есть?

Отправлено: 15:37, 08-05-2019

 

Ветеран


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

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


1. «их переместить» — что именно переместить, каталоги или файлы?
2. Что делать при совпадении имён при попытке перемещения?
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:49, 08-05-2019 | #2



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

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


Новый участник


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

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


Цитата Iska:
1. «их переместить» — что именно переместить, каталоги или файлы?
2. Что делать при совпадении имён при попытке перемещения? »
переместить каталоги, но это необязательно, просто очень хотелось бы.
при перемещении совпадения каталогов быть не может, ведь они уже созданы на локальном диске. Имею ввиду, что Windows сразу бы ругался на совпадение имен

Отправлено: 09:36, 13-05-2019 | #3


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата maxim43g:
переместить каталоги...очень хотелось бы»
Цитата maxim43g:
при перемещении совпадения каталогов быть не может, ведь они уже созданы на локальном диске. »
Да ладно?!
Код: Выделить весь код
c:\folder1\Folder\test.txt
c:\folder2\Folder\test.txt
c:\folder2\folder3\Folder\test.txt
Что и главное - куда перемещать?

Цитата maxim43g:
Имею ввиду, что Windows сразу бы ругался на совпадение имен »
Ну, ладно, поругалась... а что делать-то с каталогами, перезаписывать или нет?

-------
scio me nihil scire. Ѫ

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

Отправлено: 10:34, 13-05-2019 | #4


Новый участник


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

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


Цитата YuS_2:
Ну, ладно, поругалась... а что делать-то с каталогами, перезаписывать или нет? »
я наверное не правильно изъяснился)
подкаталогов нет.
т.е. только такого вида C:\папка\ и в ней либо присутствует файл test.txt либо нет, в данной папке только файлы, подкаталогов нет.
каталоги перезаписывать не нужно, лучше переименовать или добавить какой-либо символ в конце

Отправлено: 10:53, 13-05-2019 | #5


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата maxim43g:
подкаталогов нет. »
Тогда, дубликатов в принципе не должно быть:
powershell
Код: Выделить весь код
#requires -v 3.0
$src = 'c:\'
$dst = 'd:\out'
$file = 'test.txt'

if (!(test-path $dst)){md $dst|out-null}
mi (dir $src -dir|%{dir $_.fullname -file|? name -eq $file}|select directory).directory $dst

-------
scio me nihil scire. Ѫ

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

Отправлено: 13:18, 13-05-2019 | #6


Ветеран


Contributor


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

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


Цитата maxim43g:
подкаталогов нет.
т.е. только такого вида C:\папка\ и в ней либо присутствует файл test.txt либо нет, в данной папке только файлы, подкаталогов нет. »
Ну, раз такая пьянка, то вот код CMD
Код: Выделить весь код
@Echo Off
	Set "File=test.txt"
	Set "BoxIn=D:\CMD_Forum"
	Set "BoxOut=D:\CMD_Forum\Box_Out"
	
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%File%" /S /B /A:-D^|Find /V /I "%BoxOut%"`) DO (
		Set "Pf=%%~dpf"
		Call MD "%BoxOut%\%%Pf::=%%"
		Call 1>nul Move /Y "%%~dpf*.*" "%BoxOut%\%%Pf::=%%" &&Rd "%%~dpf"
	)
Exit /B
Цитата maxim43g:
каталоги перезаписывать не нужно, лучше переименовать или добавить какой-либо символ в конце »
ИМХО, это плохая идея, непонятно, откуда что взято. Я переношу файлы с полным путём и буквой диска.
Цитата YuS_2:
c:\folder1\Folder\test.txt
c:\folder2\Folder\test.txt
c:\folder2\folder3\Folder\test.txt »
->
c\folder1\Folder\test.txt
c\folder2\Folder\test.txt
c\folder2\folder3\Folder\test.txt

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


Последний раз редактировалось megaloman, 13-05-2019 в 14:53.

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

Отправлено: 14:40, 13-05-2019 | #7


Новый участник


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

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


Цитата YuS_2:
Тогда, дубликатов в принципе не должно быть:
powershell »
супер! все сработало, спасибо!
скажите, такая вот еще ситуация, у меня файлы такого типа "заявление на материальную помощь", некоторые пользователи создавали файлы по разному, например "заяв на на материальную помощь" или "заяв. на материальную помощь". можно ли как то переместить эти каталоги, если в названии файла есть слово "помощь"?


megaloman , спасибо большое.
тот же вопрос, можно как то исправить скрипт, что бы он выполнял условия выше?

Отправлено: 17:00, 13-05-2019 | #8


Ветеран


Contributor


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

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


maxim43g,
Код: Выделить весь код
Set "File=*помощь*.*"
Так как в имени русские символы, то критично - сохранить код в 866 (dos) кодировке.
Если надо искать файлы начиная с корня диска, то указывать, например,
Код: Выделить весь код
Set "BoxIn=D:"
Скрипт позволяет иметь папку с перемещенными папками на том же диске в назначенной папке.
Код: Выделить весь код
@Echo Off
	Set "File=*помощь*.*"
	Set "BoxIn=D:"
	Set "BoxOut=D:\CMD_Forum\Box_Out"
	
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%File%" /S /B /A:-D^|Find /V /I "%BoxOut%"`) DO (
		Set "Pf=%%~dpf"
		Call MD "%BoxOut%\%%Pf::=%%"
		Call 1>nul Move /Y "%%~dpf*.*" "%BoxOut%\%%Pf::=%%" &&Rd "%%~dpf"
	)
Exit /B
Как видите, изменения только в описании входных данных.

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


Последний раз редактировалось megaloman, 13-05-2019 в 18:58.


Отправлено: 17:39, 13-05-2019 | #9


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата maxim43g:
переместить эти каталоги, если в названии файла есть слово "помощь"? »
Код: Выделить весь код
#requires -v 3.0
$src = 'c:\'
$dst = 'd:\out'
$file = 'помощь'

if (!(test-path $dst)){md $dst|out-null}
mi (dir $src -dir|%{dir $_.fullname -file|? name -match $file}|select directory).directory $dst
чтобы с кириллицей не было проблем, скрипт лучше сохранять с кодировкой либо 1251, либо utf-8 с BOM

-------
scio me nihil scire. Ѫ


Отправлено: 18:33, 13-05-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Найти папки содержащие файл

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - не удаётся найти файл "C:\Program Files (x86)\'название папки'\Uninstall.exe". ArsLan9272 Microsoft Windows 10 1 08-04-2018 16:17
CMD/BAT - [решено] Переместить txt файлы содержащие определенный текст Alexander_88 Скриптовые языки администрирования Windows 2 18-08-2014 14:57
CMD/BAT - Найти файл Bladepp Скриптовые языки администрирования Windows 2 30-11-2013 08:01
Любой язык - Есть необходимость создать для каждой папки файл с содержимым папки Super_Kolobok Скриптовые языки администрирования Windows 2 01-11-2013 16:29
CMD/BAT - [решено] Как построчно разбить текстовый файл на текстовые файлы содержащие одну строку binwatch@vk Скриптовые языки администрирования Windows 3 09-09-2012 19:59




 
Переход