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

antonvv 19-04-2022 18:04 2983527

скрипт на перемещение файлов в папки
 
Добрый день! Прежде, чем постить эту тему, я просмотрел много других примеров. Вот этот из ближайших. Только там название папки совпадает с символами после разделителя, а в моём случае - нужно до.

Есть папка D:\DATA\РАЗБОР, в которой лежат файлы с названием в виде ТПП03-16-003-4Ч_100.png.
Есть заранее созданная структура папок, например D:\DATA\FOTO\NAME\STR\03\ТПП03-16-003-4Ч
Файл ТПП03-16-003-4Ч_1.png должен переместиться в папку ТПП03-16-003-4Ч, то есть в названии файла знак _ является разделителем.
То есть, скрипт по названию файлов должен найти папки с соответствующим названиями и переместить в них файлы. Если подходящей папки нет, то создавать её не нужно.

Помогите, пожалуйста.

Fors1k 19-04-2022 19:12 2983531

Код:

$pathIn  = "D:\DATA\РАЗБОР"
$pathOut = "D:\DATA\FOTO\NAME\STR\03"

Get-ChildItem $pathOut -Directory | ForEach {
   
Move-Item "$pathIn\$($_.Name)_*" $_.FullName
}


megaloman 19-04-2022 21:33 2983538

Код:

@Echo Off
cls
        Set "BoxIn=В:\DATA\РАЗБОР"
        Set "BoxOut=В:\DATA\FOTO\NAME\STR\03"
       
        For /f "usebackq delims=" %%d In (`2^>nul Dir "%BoxOut%\*.*" /B /A:D`) Do (
                >nul Move "%BoxIn%\%%~nxd.png" "%BoxOut%\%%~nxd\"
                >nul Move "%BoxIn%\%%~nxd_*.png" "%BoxOut%\%%~nxd\"
        )
pause
Exit /B


antonvv 20-04-2022 10:41 2983552

Спасибо вам большое, по поводу "BoxOut" я неправильно объяснил, наверное.
Есть корневой каталог D:\DATA\FOTO\, в которой уже есть большая структура пустых папок.
Например, D:\DATA\FOTO\NAME\STR\03\ТПП03-16-003-4Ч
D:\DATA\FOTO\NAME\STR\02\ТПП02-16-002-4Ч
D:\DATA\FOTO\NAME\STА\1\ТГГ-11-22-5
D:\DATA\FOTO\DAME\ST1\ТП505-11-003-4Ч
D:\DATA\FOTO\2AME\X1\ТП5055-12-003-4
И вот в нём (в D:\DATA\FOTO\)скрипт должен найти подпапку с названием, соответствующим первой части названия файла, до знака-разделителя "_".

megaloman 20-04-2022 11:31 2983553

Код:

@Echo Off
cls
        Set "BoxIn=D:\DATA\РАЗБОР"
        Set "BoxOut=D:\DATA\FOTO"
       
        For /f "usebackq delims=" %%d In (`2^>nul Dir "%BoxOut%\*.*" /B /S /A:D`) Do (
                If Exist "%BoxIn%\%%~nxd_*.png" >nul 2>&1 Move "%BoxIn%\%%~nxd_*.png" "%%d\"
        )
pause
Exit /B


antonvv 20-04-2022 12:39 2983558

Спасибо, это работает! :pray:

mariolast 19-06-2022 22:25 2986913

Подскажите где ошибка
В корневой директории есть файл format_converter.exe
Он конвертирует файлы з одного формата в другой.
В корне есть много папок с файлами, которые надо конвертировать
Вот так работает

Код:

setlocal enabledelayedexpansion
set cat="UKEK"
for %%x in ("%cat%\*.*") do "format_converter.exe" "%%x" "%%x"
cd /d %cat%
ren "*.html" "*.rtf"
md "RTF"
move "*.rtf" "RTF\")

Но это для одной папки, записанной в переменную ручками.
Попробовал сделать перебор, не получилось
Код:

setlocal enabledelayedexpansion
for /f %%i in ('dir /b/ad "*"') do (
for %%x in ("%%i\*.*") do "format_converter.exe" "%%x"
cd /d %%i
ren "*.html" "*.rtf"
md "RTF"
move "*.rtf" "RTF\"
)

Второй for не исполняется.
В чем накосячил?


Время: 23:48.

Время: 23:48.
© OSzone.net 2001-