Любой язык - скрипт на перемещение файлов в папки

Ответить
Аватара пользователя
antonvv

Любой язык - скрипт на перемещение файлов в папки

Сообщение antonvv »

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



Есть папка 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

Re: Любой язык - скрипт на перемещение файлов в папки

Сообщение Fors1k »

Код:

Код: Выделить всё

$pathIn  = "D:\DATA\РАЗБОР"
$pathOut = "D:\DATA\FOTO\NAME\STR\03"
Get-ChildItem $pathOut -Directory | ForEach {
    Move-Item "$pathIn\$($_.Name)_*" $_.FullName
} 
Аватара пользователя
megaloman

Re: Любой язык - скрипт на перемещение файлов в папки

Сообщение megaloman »

Код:

Код: Выделить всё

@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

Re: Любой язык - скрипт на перемещение файлов в папки

Сообщение antonvv »

Спасибо вам большое, по поводу "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

Re: Любой язык - скрипт на перемещение файлов в папки

Сообщение megaloman »

Код:

Код: Выделить всё

@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

Re: Любой язык - скрипт на перемещение файлов в папки

Сообщение antonvv »

Подскажите где ошибка

В корневой директории есть файл 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 не исполняется.

В чем накосячил?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»