Компьютерный форум 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=343675)

servad 15-01-2020 12:25 2905074

Перемещение файлов из каталога в каталог
 
Добрый день. Сегодня с толкнулся с такой проблемой и пока ответа не нашел.
Есть каталог например: C:\Transport\PRISHLO сюда приходит папка с вложенными файлами .xml , нужно написать .bat который бы открывал папку, брал файлы .xml и отправлял бы в папку C:\Transport\USHLO
При чем папки, которые приходят в каталог C:\Transport\PRISHLO имеют разные имена, например может придти папка 123456, а может 567890
Понятия не имею как это записать, очень прошу помощи в этом вопросе!

alhaos 15-01-2020 12:35 2905075

все просто если ваш батник будет запускать скрипт повершел такого содержания

param(
$PathPRISHLO = 'C:\Transport\PRISHLO',
$PathUSHLO = 'C:\Transport\USHLO'
)
Get-ChildItem $PathPRISHLO -Directory |
ForEach-Object {
Move-Item -Path "$($_.FullName)\*.xml" -Destination $PathUSHLO -WhatIf
Remove-Item $_.FullName -WhatIf
}

servad 15-01-2020 12:45 2905078

а нельзя это сделать в .bat? До повершел я еще не додумался

megaloman 15-01-2020 12:48 2905082

Цитата:

Цитата servad
нужно написать .bat который бы открывал папку, брал файлы .xml и отправлял бы в папку C:\Transport\USHLO »

Как понять? Что происходит с файлом? Он копируется в каталог C:\Transport\USHLO или перемещается (то есть на старом месте его больше не будет)? Копируется именно файл, а не каталог с файлом?
Что при этом должно произойти с папкой 123456, а может 567890? После обработки файла она останется, или её надо удалить?

servad 15-01-2020 12:53 2905084

Цитата:

Цитата megaloman
Как понять? Что происходит с файлом? Он копируется в каталог C:\Transport\USHLO или перемещается (то есть на старом месте его больше не будет)? Копируется именно файл, а не каталог с файлом?
Что при этом должно произойти с папкой 123456, а может 567890? После обработки файла она останется, или её надо удалить? »

в каталог C:\Transport\PRISHLO прилетает папка, допустим 123456, в ней находлятся файлы .xml, вот эти файлы .xml надо брать из папки 123456 и переносить в C:\Transport\USHLO. Папку 123456 из C:\Transport\PRISHLO удалить

servad 15-01-2020 13:22 2905091

Цитата:

Цитата alhaos
все просто если ваш батник будет запускать скрипт повершел такого содержания
param(
$PathPRISHLO = 'C:\Transport\PRISHLO',
$PathUSHLO = 'C:\Transport\USHLO'
)
Get-ChildItem $PathPRISHLO -Directory |
ForEach-Object {
Move-Item -Path "$($_.FullName)\*.xml" -Destination $PathUSHLO -WhatIf
Remove-Item $_.FullName -WhatIf
} »


а нельзя это сделать в .bat? До повершел я еще не додумался

megaloman 15-01-2020 13:50 2905098

Код:

@Echo Off
        Set "BoxIn=C:\Transport\PRISHLO"
        Set "BoxOut=C:\Transport\USHLO"
        Set "Mask=*.xml"

        FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%" /B /A:D`) Do (
                If Exist "%BoxIn%\%%d\%Mask%" (
                        >nul Move /Y "%BoxIn%\%%d\%Mask%" "%BoxOut%\" && Rd "%BoxIn%\%%d" /S /Q
                )
        )
Exit /B


servad 15-01-2020 14:03 2905101

Цитата:

Цитата megaloman
@Echo Off
Set "BoxIn=C:\Transport\PRISHLO"
Set "BoxOut=C:\Transport\USHLO"
Set "Mask=*.xml"
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%" /B /A:D`) Do (
If Exist "%BoxIn%\%%d\%Mask%" (
>nul Move /Y "%BoxIn%\%%d\%Mask%" "%BoxOut%\" && Rd "%BoxIn%\%%d" /S /Q
)
)
Exit /B »

ничего не происходит. папка с файлами как была в C:\Transport\PRISHLO так там и осталась

servad 15-01-2020 14:27 2905106

Цитата:

Цитата servad
@Echo Off
Set "BoxIn=C:\Transport\PRISHLO"
Set "BoxOut=C:\Transport\USHLO"
Set "Mask=*.xml"
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%" /B /A:D`) Do (
If Exist "%BoxIn%\%%d\%Mask%" (
>nul Move /Y "%BoxIn%\%%d\%Mask%" "%BoxOut%\" && Rd "%BoxIn%\%%d" /S /Q
)
)
Exit /B »
ничего не происходит. папка с файлами как была в C:\Transport\PRISHLO так там и осталась »

Прошу прощения, это я криворукий)

velmyshanovnyi 30-01-2020 03:50 2907571

Цитата:

Цитата megaloman
@Echo Off
Set "BoxIn=C:\Transport\PRISHLO"
Set "BoxOut=C:\Transport\USHLO"
Set "Mask=*.xml"
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%" /B /A:D`) Do (
If Exist "%BoxIn%\%%d\%Mask%" (
>nul Move /Y "%BoxIn%\%%d\%Mask%" "%BoxOut%\" && Rd "%BoxIn%\%%d" /S /Q
)
)
Exit /B »


спасибо!
мне тоже помогло - подошло на 100% :)))


Время: 01:05.

Время: 01:05.
© OSzone.net 2001-