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

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

Ответить
Настройки темы
CMD/BAT - Перенос файлов и папок

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


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

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


Здравствуйте, помогите пожалуйста написать батник. Необходимо перенести все папки и файлы с рабочего стола (C:\Users\U001\Desktop\) за исключением ярлыков в определенную папку (D:\docs)

chcp 1251
MOVE /Y C:\Users\U001\Desktop\*.* "D:\docs\"

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

Отправлено: 07:55, 29-05-2018

 

Аватара для Charg

Ветеран


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

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


Зачем вообще этот костыль? Если тебе нужно чтобы всё то барахло которые люди хранят на рабочем столе не занимало место на диске С - просто перемести рабочий стол на диск Д. Вот и всё.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:54, 29-05-2018 | #2



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

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


Ветеран


Contributor


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

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


Если для одного конкретного пользователя, то:
Код: Выделить весь код
@Echo Off
cls

Set "Users=C:\Users"
Set "Name=U001"
Set "Desk=Desktop"
Set "Out=D:\Docs"
Set "Exc=.lnk"

If Exist "%Users%\%Name%\%Desk%" Call :Dtop "%Name%" "%Users%\%Name%\%Desk%" "%Out%" "%Exc%"

Pause
GoTo :Eof

:Dtop
	Echo %1 %2
	Md "%~3_%~1" 2>nul
	>%~d3\~Exclude.tmp Echo %~4
	FOR /F "usebackq tokens=1,2 delims=>" %%i IN (`"xcopy "%~2\*.*"  "%~3_%~1\" /Exclude:%~d3\~Exclude.tmp/E /H /R /F /Y"`) DO (
		If Not "%%j"=="" (Set In=%%i &Set Ouf=%%j &Call :InDel "%%In:~0,-3%%" "%%Ouf:~1,-1%%")
	)
	For /F "usebackq delims=" %%i In (`Dir "%~2\" /B /S /A:D 2^>nul^|Sort /R`) Do 2>nul RD "%%i"
	Del %~d3\~Exclude.tmp
	Rd "%~3_%~1" 2>nul 
GoTo :Eof

:InDel
	If Exist %2 Del /A:-L %1
GoTo :Eof
Если для всех пользователей прописанных в, например, C:\Users, то:
Код: Выделить весь код
@Echo Off
cls

Set "Users=C:\Users"
Set "Desk=Desktop"
Set "Out=D:\Docs"
Set "Exc=.lnk"

FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /b /A:D "%Users%\"`) DO If Exist "%Users%\%%d\%Desk%" Call :Dtop "%%d" "%Users%\%%d\%Desk%" "%Out%" "%Exc%"

Pause
GoTo :Eof
+ выделенный кусок кода из предыдущего скрипта
Примечание: Файлы пользователя будут перенесены в папку с именем пользователя, например: D:\Docs_U001

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


Последний раз редактировалось megaloman, 29-05-2018 в 13:47.

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

Отправлено: 13:38, 29-05-2018 | #3


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


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

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


Цитата Charg:
Зачем вообще этот костыль? »
Дано: компьютерный класс, пара сотен учащихся, на рабочих столах постоянная помойка. Уровень пользователей: "не могу найти нужный ярлык".

Необходимо: каждый день при включении компьютера, сносить все файлы и папки на диск D. Главная задача — чистый рабочий стол (с нужными ярлыками), экономия места на С — задача второстепенная.

Последний раз редактировалось iiama, 30-05-2018 в 02:27.


Отправлено: 01:47, 30-05-2018 | #4


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата iiama:
Главная задача — чистый рабочий стол (с нужными ярлыками), экономия места на С — задача второстепенная. »
Для текущего пользователя:
Код: Выделить весь код
@echo off
set "dst=d:\docs\%username%\desktop"
:loop
if exist "%dst%\" (set "dst=%dst%_"&goto loop)
if not exist "%dst%\" md "%dst%"
for /f "tokens=3*" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\user shell folders" /v desktop^|find "desktop"') do set "desktop=%%i"
robocopy "%desktop%" "%dst%" /xf "*.lnk" "*.ini" /s /e /tee /move
pause&exit /b

-------
scio me nihil scire. Ѫ

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

Отправлено: 06:10, 30-05-2018 | #5


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

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
Move-Item -Path "C:\Users\U001\Desktop\*" -destination "D:\docs" -Exclude "*.lnk"

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


Отправлено: 09:27, 30-05-2018 | #6


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата DJ Mogarych:
-Path "C:\Users\U001\Desktop\*" »
тогда уж:
powershell:
Код: Выделить весь код
$src = [environment]::getfolderpath("desktop")
if (!(test-path ($dst = "d:\docs\$env:username"))){md $dst}
mi "$src\*" $dst -exc '*.lnk' -whatif
но если присутствуют каталоги и вложенные в них ярлыки, они также будут перемещены...

Перемещение с сохранением структуры и с учетом наличия исключаемых файлов в дочерних каталогах:
Код: Выделить весь код
function move-rec ($a,$b){
	begin{$splt = $a.split('\')[-1]}
	process{
		if($_.psiscontainer){
			if(!(test-path ($fdst = $b+($_.fullname -split $splt)[1]))){
				md $fdst|out-null
			}
		} else {
			$fdst = $b+($_.directoryname -split $splt)[1]
			mi $_.fullname $fdst
		}
	}
}

# Исходный и целевой каталоги
$src_m = [environment]::getfolderpath("desktop")
$dst_m = "d:\docs\$env:username"
# Исключаемые файлы
$ex = '*.lnk'

# перемещаем файлы с сохранением структуры
dir $src_m -rec -exc $ex|move-rec $src_m $dst_m

# удаляем пустые каталоги
dir $src_m -rec -dir|sort{$_.fullname.length} -des|%{
	if((dir $_.fullname -rec) -eq $null){del $_.fullname}
}

Последний раз редактировалось YuS_2, 30-05-2018 в 18:16.

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

Отправлено: 12:59, 30-05-2018 | #7


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


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

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


Всем огромное спасибо, задача решена.

Отправлено: 02:33, 31-05-2018 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Скрипт для забора файлов и папок (с сохр. структуры) из неск. сетевых папок в одну л. DjBoBo Скриптовые языки администрирования Windows 0 19-07-2016 16:30
MSFT SQL Server - перенос папок (файлов) с помощью SQL Russo Программирование и базы данных 0 06-11-2015 00:38
CMD/BAT - Перенос файлов и создание папок speedo Скриптовые языки администрирования Windows 11 01-09-2015 13:38
Интерфейс - [решено] Пропали эскизы папок (не файлов а, именно папок) demidovvas Microsoft Windows 7 5 08-03-2014 18:27
CMD/BAT - Перенос всех файлов из включенных папок 4zz Скриптовые языки администрирования Windows 2 26-08-2012 21:33




 
Переход