Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - скрипт на перемещение файлов в папки

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

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Есть папка 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Ч, то есть в названии файла знак _ является разделителем.
То есть, скрипт по названию файлов должен найти папки с соответствующим названиями и переместить в них файлы. Если подходящей папки нет, то создавать её не нужно.

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

Отправлено: 18:04, 19-04-2022

 

Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$pathIn  = "D:\DATA\РАЗБОР"
$pathOut = "D:\DATA\FOTO\NAME\STR\03"

Get-ChildItem $pathOut -Directory | ForEach {
    Move-Item "$pathIn\$($_.Name)_*" $_.FullName
} 
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:12, 19-04-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2732
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:33, 19-04-2022 | #3


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо вам большое, по поводу "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\)скрипт должен найти подпапку с названием, соответствующим первой части названия файла, до знака-разделителя "_".

Отправлено: 10:41, 20-04-2022 | #4


Ветеран


Contributor


Сообщения: 2732
Благодарности: 1698

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-04-2022 в 12:11.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:31, 20-04-2022 | #5


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 12:39, 20-04-2022 | #6


Аватара для mariolast

Ветеран


Сообщения: 717
Благодарности: 80

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось mariolast, 20-06-2022 в 01:51.


Отправлено: 22:25, 19-06-2022 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - скрипт на перемещение файлов в папки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Перемещение файлов в папки по датам создания NaMoRZA Скриптовые языки администрирования Windows 2 14-01-2022 14:41
CMD/BAT - [решено] Перемещение файлов в папки, названные по части имен файлов NuclearBox Скриптовые языки администрирования Windows 5 13-02-2021 16:26
CMD/BAT - Перемещение файлов в папки с аналогичными именами londondron Скриптовые языки администрирования Windows 12 22-03-2017 15:22
CMD/BAT - [решено] Создание папок на основе имен файлов и перемещение файлов в эти папки mezzin Скриптовые языки администрирования Windows 4 10-12-2016 21:11
VBS/WSH/JS - Перемещение файлов и папок в разные папки... WalkManX Скриптовые языки администрирования Windows 0 07-08-2011 22:37




 
Переход