Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Перемещение папок исходя из названия ярлыков в другой папке.

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


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

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


Всем здравствуйте, прошу помочь с такой проблемой.
Нужно вырезать и переместить в конкретную папку другие папки из конкретного места исходя из названий ярлыков в первой папке.
Пример:
1 папка основная - C:\1 - в ней лежат ярлыки
2 папка C:\рабочая папка\ - в ней лежат папки
Нужно из папки C:\рабочая папка\ переместить в C:\1\ - только те папки, где есть названия ярлыков, которые содержатся в C:\1\.
Допустим лежит ярлык в C:\1\recor.exe.
В папке C:\рабочая папка\ - есть папка с таким названием (C:\рабочая папка\recor ), но есть и другие папки, нужно чтобы вырезалась и перемещалась только папка с названием "recor" в C:\1\ (потому что такое название ярлыка есть в C:\1).

Реализуемо ли это вообще? Если да, то я прошу Вас помочь.

Отправлено: 11:42, 30-04-2020

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell, должно работать, по идее:

Код: Выделить весь код
$folders = dir "C:\рабочая папка" -directory
$shortcuts = dir "C:\1\*.lnk"

foreach ($folder in $folders) {
    if ($folder.basename -in $shortcuts.basename) {
    move "$($folder.FullName)" -Destination "$(($shortcuts.directoryname)[0])"
    }
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 14:22, 30-04-2020 | #2



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

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


Ветеран


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

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


а если структура такая?
Код: Выделить весь код
C:\РАБОЧАЯ ПАПКА
├───2
│   └───22
│       └───recor
│               bbb.txt
│               
├───ddd
└───recor
        1.txt
        2.txt
так будет добавлена единичка (или n+1) к имени перемещаемой папки
Код: Выделить весь код
@echo off
set "d_lnk=C:\1"
set "ext=lnk"
set "d_work=C:\рабочая папка"
set "d_out=C:\OUT"

if not exist "%d_out%" md "%d_out%"
for /f "delims=" %%a in ('dir /ad/b/s "%d_work%"') do call :l "%d_lnk%" "%ext%" "%d_out%" "%%a"
pause& exit

:l
 setlocal
  pushd "%~3"
   if exist "%~1\%~n4.%~2" if not exist "%~n4%n%" (>nul xcopy "%~4" "%~n4%n%\"& >nul 2>&1 rd /s /q "%~4") else (set /a n+=1& goto l)
  popd
 endlocal
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:15, 30-04-2020 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Про рекурсивный перебор в ТЗ явно не сказано.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 21:04, 30-04-2020 | #4


Ветеран


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

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


пока он (рекурсивный перебор) случайно не нарисовался да еще именно с повтором имени.

Отправлено: 00:53, 01-05-2020 | #5


Ветеран


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

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


Это как обычно .

Отправлено: 02:53, 01-05-2020 | #6


Deadooshka


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

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


рекурсивно можно и так
Код: Выделить весь код
$lnkdir = 'C:\1'
$folddir = 'C:\рабочая папка'
$names = (get-childitem $lnkdir '*.lnk').BaseName

get-childitem $folddir -directory -recurse | foreach {
	if ($_.BaseName -in $names) {
		$f0 = $lnkdir, $_.BaseName -join '\'; $c = $null
		while (test-path $($fold = $f0 + $c; $c++; $fold) -pathtype container) {
			"$fold exists, adding 1"
		}
		move-item $_.FullName $fold -verbose
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:49, 01-05-2020 | #7


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


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

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


Спасибо огромное за Ваши ответы. Всё работает.

Отправлено: 14:10, 01-05-2020 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Создание папок исходя из дат создания файлов и перемещение их в эти папки mezzin Скриптовые языки администрирования Windows 13 25-01-2018 18:38
CMD/BAT - [решено] Переименование файла исходя из его названия Sta1917 Скриптовые языки администрирования Windows 6 09-09-2012 00:04
VBS/WSH/JS - Создание папок исходя из имени хоста.Создание ярлыков. ufunf Скриптовые языки администрирования Windows 1 18-02-2010 13:59
Конкурс - Размещение собственных папок, файлов и ярлыков в папке Компьютер OSZone Microsoft Windows 7 0 27-10-2009 01:30




 
Переход