Войти

Показать полную графическую версию : Нужно сделать бат файл,который бы перемещал файлы в бэкап


CyberNoble
06-11-2019, 13:21
Позвольте отнять немного времени
Дали задание в универе,сделал все,кроме одного.Само задание такое:
Сделать батник,который переносит все файлы в бэкап(не копирует),кроме тех,которые указаны в качестве параметров,их нужно оставить в исходной папке
Ну,самое простое-проверить папку на наличие папки"backup" я сделал еще с первого раза,а вот с переносом файлов уже косяк,понимаю как можно сделать,если бы нужно было переносить файлы,которые заданны в качестве параметров,а наоборот уже не знаю.
Была идея сделать через цикл,по типу for %%i in ('dir /a-d /b | find ".bat" /v') DO ( move %%i backup ) Но цикл не может воставить значение после конвеера в переменную %%i ,пробовал записать команду dir в переменную и уже набор цикла из этйо переменной делать,но тоже не вышло.Можете подсказать как сделать.Препод сказал,что нужно,желательно,через ветвление и циклы делать.Самый простой способ с переносом всех файлов и последующем удалением ненужных файлов я уже делал,мне бы посмотреть как сделать правильный вариант.Заранее благодарен

Ageron
06-11-2019, 13:45
кроме тех,которые указаны в качестве параметров,их нужно оставить в исходной папке »
а где в вашем коде этот параметр?

alpap
06-11-2019, 18:22
CyberNoble, очень хорошо просматривается что учиться желания у вас мало и в справку вы толком не заглядывали.
готового решения не дам!
вот это:

dir /a-d/b "C:\Papka"|findstr /rv /c:"%~1" /c:"%~2"

нужно обернуть в for /f, на выходе получите только необходимые файлы, ну а
читайте, соответственно что такое параметры и как с ними запускать, а также что такое:
for /?
findstr /?

megaloman
06-11-2019, 19:21
@Echo Off
Set "BoxIn=Z:\Box_In"
Set "BoxArc=Z:\Box_Arc"

Set Spisok="Not delete file1.txt" "Not delete file2.kuku" "Not delete file3.doc" "Not delete file4.txt"

For /F "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\" /B /A:-D`) Do Call :MyMove "%BoxIn%" "%BoxArc%" "%%f"
Exit /B 0

:MyMove
FOR %%i IN (%Spisok%) DO If /I "%~3"=="%%~i" Exit /B 1
>nul Move /Y "%~1\%~3" "%~2\"
Exit /B

Опиум
08-11-2019, 12:45
Сделать батник,который переносит все файлы в бэкап(не копирует),кроме тех,которые указаны в качестве параметров,их нужно оставить в исходной папке »

robocopy /mov /e исходная_папка бэкап_папка /XF файл_оставить1 /XF файл_ставить2

DJ Mogarych
08-11-2019, 13:06
Опиум, задание в универе вряд ли подразумевает использование сторонних утилит, задача наверняка на использование чистого cmd.

alpap
08-11-2019, 16:25
сторонних утилит »
robocopy с 2008 входит в состав Windows 7




© OSzone.net 2001-2012