Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] поиск файла в папке, и если файл найден то переименование папки (http://forum.oszone.net/showthread.php?t=285010)

tr011_tmn 13-07-2014 22:34 2376162

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

Есть у меня дерево каталогов, в этом дереве присутствуют разномастные каталоги, в одном из них лежит файл для примера 1.txt как рекурсивно пройтись по каталогам в его поиске, и если он будет обнаружен то родительский каталог этого файла переименовать?

Iska 13-07-2014 23:16 2376171

Такой файл будет единственным в дереве? Или может оказать так:
Код:

W:\01
W:\02
W:\03
W:\02\04
W:\02\1.txt
W:\02\04\1.txt

? Ибо сие в корне меняет возможные методы обхода дерева.

sov44 13-07-2014 23:20 2376175

Код:

@Echo Off
SetLocal EnableDelayedExpansion

:: где ищем
set in=c:\2
:: на что меняем директорию
set out=new
:: имя искомого файла
set file=DelFiles.txt

For /f "delims=" %%a In ('dir /b /s /a-d "%in%\*"') do (
if /i "%%~nxa"=="%file%" (
echo %%~dpa
set line=%%~dpa
ren "!line:~0,-1!" "%out%"
))
pause


Iska 14-07-2014 05:06 2376229

sov44, почему вместо:
Код:

For /f "delims=" %%a In ('dir /b /s /a-d "%in%\*"') do (
if /i "%%~nxa"=="%file%" (

не просто:
Код:

… ('dir /b /s /a-d "%in%\%file%"') …
?

И нужно-таки уточнение от автора по поводу моего вопроса, иначе все вложенные каталоги после переименования будут потеряны для последующего поиска.

tr011_tmn 14-07-2014 09:25 2376263

Цитата:

Цитата Iska
Такой файл будет единственным в дереве? Или может оказать так: »

да такой файл будет единственный, и в других каталогах он не встретится

Iska 14-07-2014 17:52 2376408

tr011_tmn, тогда пробуйте вышеприведённый код коллеги sov44.

tr011_tmn 14-07-2014 20:57 2376512

sov44, Iska, спасибо большое, решение подошло как нельзя лучше. :hi:


Время: 08:40.

Время: 08:40.
© OSzone.net 2001-