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

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

SurkovAA 09-02-2022 11:32 2979618

Перемещение pdf файлов по имени в папку с аналогичном названием имени файла
 
Доброго времени суток уважаемые господа.
Есть задачка, в одной сетевой папке, находятся папки и pdf файлы.
Имена папок выглядят как:
Иванов Иван Иванович 14-;
Васильев Дмитрий Васильевич 11.20;
Властелин Колец Фродович 01.09.1200.

Имена PDF файлов, аналогичны названию папок.

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

Возможно ли сделать такой батик? :help:

Опиум 09-02-2022 11:59 2979622

Навскидку:
Код:

for /f "delims=*" %%i in ('dir /b *.pdf) do (md "%~ni" & move "%%i" "%~ni\")

SurkovAA 09-02-2022 12:21 2979625

К сожалению ни чего не происходит, после запуска батника

megaloman 09-02-2022 12:54 2979628

Код:

@Echo Off
cls
>nul Chcp  1251
        Set "FileIn=Z:\Box_In\*.pdf"
        Set "BoxOut=Z:\Box_Out"

       
        FOR /F "usebackq delims=" %%f In (`2^>nul Dir "%FileIn%" /S /B /A:-D`) DO (
                2>nul Md "%BoxOut%\%%~nf"
                >nul Move /Y "%%f" "%BoxOut%\%%~nf\"
        )
pause
Exit /B

Пути пропишИте свои.

Цитата:

Цитата SurkovAA
желательно сделать перемещение, а не копирование. »

Вот еще вариант: если в папке, например, "Иван Иванович" только один файл "Иван Иванович.pdf", то не вижу смысла после перемещения файла оставлять пустую папку "Иван Иванович". Удаляем ее:
Код:

@Echo Off
cls
>nul Chcp  1251
        Set "FileIn=Z:\Box_In\*.pdf"
        Set "BoxOut=Z:\Box_Out"

       
        FOR /F "usebackq delims=" %%f In (`2^>nul Dir "%FileIn%" /S /B /A:-D ^|Sort /R`) DO (
                2>nul Md "%BoxOut%\%%~nf"
                >nul Move /Y "%%f" "%BoxOut%\%%~nf\" &&2>nul Rd "%%~dpf"
        )
pause
Exit /B

Если в папке что-то еще, папка удалена не будет.

Fors1k 09-02-2022 13:12 2979632

Цитата:

Цитата megaloman
Пути пропишИте свои. »

Почему вы всегда здесь делаете "И" заглавной?)

megaloman 09-02-2022 13:21 2979633

Fors1k,
Цитата:

Цитата Fors1k
Почему вы всегда здесь делаете "И" заглавной? »

Чтобы обозначить ударение. Прямого запрета на это в правилах нет, хотя в рекомендациях видим:
Цитата:

Для выделения или постановки ударения на слово или фразу, используйте жирный шрифт или выделение цветом. Не используйте ЗАГЛАВНЫЕ буквы.
Опять же, здесь речь идёт о смысловом ударении на слово, но никак не на ударение внутри слова. Мне гораздо проще обозначить ударение в слове большой буквой.
А пропИшиете и пропишИте - несут немного разную смысловую нагрузку.
Или, еще лучше, писАть или пИсать. :)

Fors1k 09-02-2022 13:27 2979634

Цитата:

Цитата megaloman
Чтобы выделить ударение »

Это ударение - единственно возможное. Если же ударение будет на первую букву "и", то вторая уже будет "и" "е".
Так что здесь путаница в ударениях невозможна :)

SurkovAA 09-02-2022 13:34 2979635

А подскажите в каком месте, необходимо указывать пути?
Я в этих сверх технологиях, очень плохо разбираюсь.. Поэтому обратился к вам, богам этого дела.

Разобрался, работает, Спасибо уважаемый! Очень выручили!

Fors1k 09-02-2022 13:41 2979638

Цитата:

Цитата SurkovAA
указывать пути? »

Пути или путь?
Цитата:

Цитата SurkovAA
в одной сетевой папке, »


megaloman 09-02-2022 13:46 2979641

SurkovAA,
Цитата:

Цитата SurkovAA
в одной сетевой папке, находятся папки и pdf файлы. »

Цитата:

Цитата SurkovAA
Я в этих сверх технологиях, очень плохо разбираюсь.. »

Указать путь к файлу - это не сверхвысокая технология, это азбука.
В моих батниках специально выделяю такие вещи отдельными строками, чтобы их было удобнее менять. В Вашем случае (опять же, я не знаю Ваших реальных путей):
Код:

        Set "FileIn=\\ИмяСервера\ИмяРасшареннойПапки\ИмяПапки\*.pdf"
        Set "BoxOut=Полное имя папки, где Вы создаёте папки с именами и куда Вы перемещаете свои pdf"

Цитата:

Цитата SurkovAA
Требуется все pdf файлы растасовать по папкам с аналогичным названием »

Я предположил, что Вы перемещаете файлы на другой ресурс или другую папку.

SurkovAA 09-02-2022 14:07 2979645

Цитата:

Цитата megaloman
Я предположил, что Вы перемещаете файлы на другой ресурс или другую папку. »

Нет, перемещать ни куда не надо, требуется просто навести порядок в сетевой папке, в которой ооочень много pdf файлов и папок. Требуется все pdf файлы, распихать по папкам с аналогичным названием, не более..
При этом, если папки не существует, то создать папку с таким же именем как у pdf файла и переместить в папку сам файл. Если же папка существует с таким же названием как у pdf файла, то просто перенести pdf файл в уже имеющуюся папку с таким же названием.

Тока что подумал, если в папке допустим уже есть pdf файл с таким же названием, то при перемещении он же его заменит? Можно ли добавить в этом случае цифру в названии к перемещаемому файлу, что бы тот его не стер?

megaloman 09-02-2022 17:16 2979653

Цитата:

Цитата SurkovAA
требуется просто навести порядок в сетевой папке, в которой ооочень много pdf файлов и папок. »

Давайте к постановке задачи.
У Вас есть сетевая папка:
\\Server\Расшаренная папка\сетевая папка
Там есть:
папка1\файл1.Pdf
папка2\файл2.Pdf
.....
папкаN\файлN.Pdf
файл111.Pdf
файл222.Pdf
файл333.Pdf

Врпросы:
Имена "папкаN" всегда == "файлN" ?
Если "папкаN"=="файлN" что делать?
Если "папкаN"<>"файлN" что делать?

Возможно ли "папкаK\файлK1.pdf
Возможно ли "папкаK\файлK2.pdf
Возможно ли "папкаK\файлK3.pdf
Возможно ли "папкаK\файлK4.pdf
Возможно ли "папкаK\файлK5.pdf
что тогда делать?

Возможно ли "папкаI\папкаII\файлII.pdf" что тогда делать?

Файлы перемещаем так?:
файл111.Pdf -> "папка111\файл111.Pdf"
файл222.Pdf -> "папка222\файл222.Pdf"
файл333.Pdf -> "папка333\файл333.Pdf"


Или Вам просто надо рассмотреть корень папки \\Server\Расшаренная папка\сетевая папка\*.pdf и их разбросать по подпапкам:
папка111\файл111.Pdf
папка222\файл222.Pdf
папка333\файл333.Pdf

megaloman 09-02-2022 18:27 2979659

Если
Цитата:

Цитата megaloman
Вам просто надо рассмотреть корень папки \\Server\Расшаренная папка\сетевая папка\*.pdf и их разбросать по подпапкам: »

Код:

@Echo Off
cls
>nul Chcp  1251
        Set "BoxIn=\\192.168.100.23\Test2\MyPdf"
        Set "Mask=*.pdf"
       
        FOR /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO (
                If Not Exist "%BoxIn%\%%~nf\%%f" (
                        2>nul Md "%BoxIn%\%%~nf" &>nul Move "%BoxIn%\%%f" "%BoxIn%\%%~nf\"
                ) Else (
                        Call :MyMove "%BoxIn%\%%~nf" "%BoxIn%\%%f" 100
                )
        )
pause
Exit /B

:MyMove
        Set /A N=%3
        If Not Exist %1 Md %1
        :Begin
                Set /A N+=1
                If Exist "%~1\%~n2 (%N:~1%)%~x2" GoTo :Begin
                >Nul Move  %2 "%~1\%~n2 (%N:~1%)%~x2"
Exit /B

Цитата:

Цитата SurkovAA
Можно ли добавить в этом случае цифру в названии к перемещаемому файлу, что бы тот его не стер? »

Учтено.

SurkovAA 09-02-2022 19:00 2979660

Воот, то что нужно было! Спасибо огромное и человеческое! Здоровья вам огромного и низкий поклон! Выручили.. Не представляете даже как..


Время: 03:24.

Время: 03:24.
© OSzone.net 2001-