Найти папки содержащие файл
Добрый день.
мне необходимо найти все папки, содержащие файл "test.txt".
желательно сразу их переместить в другую директорию.
может скрипт какой или программа есть?
|
1. «их переместить» — что именно переместить, каталоги или файлы?
2. Что делать при совпадении имён при попытке перемещения?
|
Цитата:
Цитата Iska
1. «их переместить» — что именно переместить, каталоги или файлы?
2. Что делать при совпадении имён при попытке перемещения? »
|
переместить каталоги, но это необязательно, просто очень хотелось бы.
при перемещении совпадения каталогов быть не может, ведь они уже созданы на локальном диске. Имею ввиду, что Windows сразу бы ругался на совпадение имен
|
Цитата:
Цитата maxim43g
переместить каталоги...очень хотелось бы »
|
Цитата:
Цитата maxim43g
при перемещении совпадения каталогов быть не может, ведь они уже созданы на локальном диске. »
|
Да ладно?!
Код:
c:\folder1\Folder\test.txt
c:\folder2\Folder\test.txt
c:\folder2\folder3\Folder\test.txt
Что и главное - куда перемещать?
Цитата:
Цитата maxim43g
Имею ввиду, что Windows сразу бы ругался на совпадение имен »
|
Ну, ладно, поругалась... а что делать-то с каталогами, перезаписывать или нет?
|
Цитата:
Цитата YuS_2
Ну, ладно, поругалась... а что делать-то с каталогами, перезаписывать или нет? »
|
я наверное не правильно изъяснился)
подкаталогов нет.
т.е. только такого вида C:\папка\ и в ней либо присутствует файл test.txt либо нет, в данной папке только файлы, подкаталогов нет.
каталоги перезаписывать не нужно, лучше переименовать или добавить какой-либо символ в конце
|
Тогда, дубликатов в принципе не должно быть:
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
|
Цитата:
Цитата 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
|
Цитата:
Цитата YuS_2
Тогда, дубликатов в принципе не должно быть:
powershell »
|
супер! все сработало, спасибо!
скажите, такая вот еще ситуация, у меня файлы такого типа "заявление на материальную помощь", некоторые пользователи создавали файлы по разному, например "заяв на на материальную помощь" или "заяв. на материальную помощь". можно ли как то переместить эти каталоги, если в названии файла есть слово "помощь"?
megaloman , спасибо большое.
тот же вопрос, можно как то исправить скрипт, что бы он выполнял условия выше?
|
maxim43g,
Код:
Set "File=*помощь*.*"
Так как в имени русские символы, то критично - сохранить код в 866 (dos) кодировке.
Если надо искать файлы начиная с корня диска, то указывать, например,
Скрипт позволяет иметь папку с перемещенными папками на том же диске в назначенной папке.
Код:
@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
Как видите, изменения только в описании входных данных.
|
Цитата:
Цитата 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
|
Время: 08:59.
© OSzone.net 2001-