Компьютерный форум 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=215932)

4zz 18-09-2011 21:25 1755641

Копирование в/из текущую/ей папку/и
 
Уважаемые знатоки!
Помогите написать 2 батника по следующим условиям:

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

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

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

Nuclears 19-09-2011 01:25 1755789

Первый 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 1756408

Цитата:

Цитата Nuclears
имя папки будет 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 1756440

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

Nuclears 20-09-2011 00:09 1756500

Цитата:

Цитата 4zz
Вот только если папка 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 1756632

Цитата:

Цитата 4zz
Вот только если папка Mozilla в %APPDATA% не присутствует, то второй батник не срабатывает »

4zz, я подумал, если удалять нечего в %APPDATA%, значит мозиллы на компе нет и копировать файлы смысла нет, но раз так, то изменил свой предыдущий пост плюс добавил проверку на присутствие папок с текущей датой.

4zz 20-09-2011 12:39 1756704

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 1756801

Цитата:

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

в ковычки заключить забыл)
Код:

MD "%APPDATA%\Mozilla"

Survover 18-01-2017 21:02 2704580

Здравствуйте как мне скопировать файл из диска 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 2704582

copy "D:\Instal\Drivers\BloodyTonemaker1\audio_split.bat" "C:\Users\Survover\AppData\Roaming\Microsoft\Windows\Start Menu\"

Survover 18-01-2017 21:16 2704584

не копирует !

Survover 18-01-2017 21:21 2704587

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

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

megaloman 18-01-2017 21:47 2704593

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 2704594

Спасибо большое !!!!


Время: 13:49.

Время: 13:49.
© OSzone.net 2001-