Войти

Показать полную графическую версию : [решено] Копирование в/из текущую/ей папку/и


4zz
18-09-2011, 21:25
Уважаемые знатоки!
Помогите написать 2 батника по следующим условиям:

При запуске первого бат - в папке, из которой произведен запуск батника, создается папка с текущей датой и временем, в которую копируется папка Mozilla, со всем содержимым, из скрытой директории %APPDATA%.

При запуске второго - выводится пронумерованный перечень папок с текущей датой, из директории в которой запущен батник, и предлагается "Выберите порядковый номер текущей даты для копирования", а после выбора (1,2,3 и т.д.) производится копирование папки Mozilla, из соответствующей папки с датой, в скрытую папку %APPDATA%, предварительно удалив в этой директории аналогичную папку если она там имеется.

Наверное очень сложно.. :)

Nuclears
19-09-2011, 01:25
Первый CMDшник

@echo off
setlocal enableextensions enabledelayedexpansion
set TmpDIR=%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%--%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%
XCOPY "%APPDATA%\Mozilla" %TmpDIR% /S/I/Q/Y >NUL


имя папки будет HH-MM-SS--DD-MM-YYYY

а вот со вторым сложновато, не осилю)

El Sanchez
19-09-2011, 21:23
имя папки будет HH-MM-SS--DD-MM-YYYY »
Наверное, лучше дату сначала ставить, легче сортировать папки по дате.

Батник №1

@Echo Off
Set Output=%DATE%--%TIME:~0,-3%
XCopy /SYQI "%APPDATA%\Mozilla" "%Output::=-%\Mozilla"


Батник №2

@Echo Off
SetLocal
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set _ 1>nul 2>&1||GoTo :EoF
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&Call XCopy /SYQI "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
EndLocal

4zz
19-09-2011, 22:13
Просто волшебство какое-то! Супер! Спасибо!
Вот только если папка Mozilla в %APPDATA% не присутствует, то второй батник не срабатывает :( :)

Nuclears
20-09-2011, 00:09
Вот только если папка Mozilla в %APPDATA% не присутствует, то второй батник не срабатывает »
так проверку включите :)

@Echo Off
SetLocal
IF EXIST "%APPDATA%\Mozilla" (
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&&Call XCopy /SYQI "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
) ELSE (
rem создадим папку %APPDATA%\Mozilla
MD %APPDATA%\Mozilla
rem и вот теперь выполним то, требовалось :)
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&&Call XCopy /SYQI "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
)

El Sanchez
20-09-2011, 10:20
Вот только если папка Mozilla в %APPDATA% не присутствует, то второй батник не срабатывает »
4zz, я подумал, если удалять нечего в %APPDATA%, значит мозиллы на компе нет и копировать файлы смысла нет, но раз так, то изменил свой предыдущий пост плюс добавил проверку на присутствие папок с текущей датой.

4zz
20-09-2011, 12:39
El Sanchez,
Спасибо огромное все работает!!!! :)

Nuclears,
При запуске bat в случае отсутствия папки Mozilla в %APPDATA%, создает в текущей папке три пустые директории (and, data и setting) и выход. :)

В связи с тем, что при запущенной программе, часть файлов не копируется (пишет что используется другой программой), добавил принудительное завершение Mozillы
И добавил копирование скрытых, системных файлов, сохранение атрибутов, получилось так:
Батник1:
@echo off
chcp 1251
taskkill.exe /F /IM firefox.exe /T
ping -n 1 -w 5000 192.168.254.254 >nul
Set Output=%DATE%--%TIME:~0,-3%
XCopy /SEAHYQIRK "%APPDATA%\Mozilla" "%Output::=-%\Mozilla"
pause

Батник2:
@Echo Off
chcp 1251
taskkill.exe /F /IM firefox.exe /T
ping -n 1 -w 5000 192.168.254.254 >nul
SetLocal
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /AD %DATE%*^|FindStr /N .') Do Echo %%A : %%B&Set _%%A=%%B
Set _ 1>nul 2>&1||GoTo :EoF
Set /P "N=Выберите порядковый номер текущей даты для копирования: "
If Defined _%N% RD /S /Q "%APPDATA%\Mozilla" 2>nul&Call XCopy /SEAHYQIRK "%%_%N%%%\Mozilla" "%APPDATA%\Mozilla"
EndLocal

Спасибо всем! :)

Nuclears
20-09-2011, 16:02
При запуске bat в случае отсутствия папки Mozilla в %APPDATA%, создает в текущей папке три пустые директории (and, data и setting) и выход. »
в ковычки заключить забыл)

MD "%APPDATA%\Mozilla"

Survover
18-01-2017, 21:02
Здравствуйте как мне скопировать файл из диска D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat в C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\ пробовал вот так но ничего (
copy D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\audio_split.bat

megaloman
18-01-2017, 21:12
copy "D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat" "C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\"

Survover
18-01-2017, 21:16
не копирует !

Survover
18-01-2017, 21:21
Все хорошо спасибо большое я путь вам не тот указал ! должно было быть C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup а не Start Menu )))

megaloman, подскажите как написать что бы для любого пользователя было ? %USERS% ?

megaloman
18-01-2017, 21:47
copy "D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat" "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\"
Чтобы проверить путь сделайте
echo "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\"
Если визуально правильно, сделайте
dir "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\"
В принципе, имя юзера можно взять как %Username% ,но это будет чуть длиннее

Survover
18-01-2017, 21:48
Спасибо большое !!!!




© OSzone.net 2001-2012