Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Нужно сделать бат файл,который бы перемещал файлы в бэкап (http://forum.oszone.net/showthread.php?t=342838)

CyberNoble 06-11-2019 13:21 2894976

Нужно сделать бат файл,который бы перемещал файлы в бэкап
 
Позвольте отнять немного времени
Дали задание в универе,сделал все,кроме одного.Само задание такое:
Сделать батник,который переносит все файлы в бэкап(не копирует),кроме тех,которые указаны в качестве параметров,их нужно оставить в исходной папке
Ну,самое простое-проверить папку на наличие папки"backup" я сделал еще с первого раза,а вот с переносом файлов уже косяк,понимаю как можно сделать,если бы нужно было переносить файлы,которые заданны в качестве параметров,а наоборот уже не знаю.
Была идея сделать через цикл,по типу
Код:

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

Ageron 06-11-2019 13:45 2894978

Цитата:

Цитата CyberNoble
кроме тех,которые указаны в качестве параметров,их нужно оставить в исходной папке »

а где в вашем коде этот параметр?

alpap 06-11-2019 18:22 2895026

CyberNoble, очень хорошо просматривается что учиться желания у вас мало и в справку вы толком не заглядывали.
готового решения не дам!
вот это:
Код:

dir /a-d/b "C:\Papka"|findstr /rv /c:"%~1" /c:"%~2"
нужно обернуть в for /f, на выходе получите только необходимые файлы, ну а
читайте, соответственно что такое параметры и как с ними запускать, а также что такое:
Код:

for /?
findstr /?


megaloman 06-11-2019 19:21 2895037

Код:

@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 2895275

Цитата:

Цитата CyberNoble
Сделать батник,который переносит все файлы в бэкап(не копирует),кроме тех,которые указаны в качестве параметров,их нужно оставить в исходной папке »

Код:

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

DJ Mogarych 08-11-2019 13:06 2895281

Опиум, задание в универе вряд ли подразумевает использование сторонних утилит, задача наверняка на использование чистого cmd.

alpap 08-11-2019 16:25 2895321

Цитата:

Цитата DJ Mogarych
сторонних утилит »

robocopy с 2008 входит в состав Windows 7


Время: 21:23.

Время: 21:23.
© OSzone.net 2001-