PDA

Показать полную графическую версию : скрипт на перемещение файлов в папки


antonvv
19-04-2022, 18:04
Добрый день! Прежде, чем постить эту тему, я просмотрел много других примеров. Вот этот из ближайших (http://forum.oszone.net/thread-339195.html). Только там название папки совпадает с символами после разделителя, а в моём случае - нужно до.

Есть папка 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
$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
@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
Спасибо вам большое, по поводу "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
@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
Спасибо, это работает! :pray:

mariolast
19-06-2022, 22:25
Подскажите где ошибка
В корневой директории есть файл 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 не исполняется.
В чем накосячил?




© OSzone.net 2001-2012